2016-10-15 2 views
0

테이블/쿼리에서 최대 값을 선택하는 것과 관련하여 SQL 문제가 있습니다. 튜플의 연관된 기본 키뿐만 아니라 집계 식에서 반환 된 최대 값을 반환하려고합니다.SQL - 쿼리의 MAX (값) 관련 기본 키 및 값 검색

select 문에 집계 함수 만 포함 할 때 최대 값만 표시하는 튜플을 반환 할 수 있지만 기본 키와 집계 식의 최대 값 모두가 1 튜플 만 반환 할 수 없습니다. 여기

내 쿼리의 예입니다

SELECT id, MAX(SQRT((POWER((x-(-28)),2) + POWER((y-(151)),2)))) as distance 
FROM table 
GROUP BY id; 

이 모든 아이디의와 함수의 연관 값을 반환 기대한다. 최대 값과 관련 ID가있는 튜플 하나만 반환합니다.

이 문제를 해결하려면 어떻게해야합니까? 이 작업을 수행하는

답변

1

한 가지 방법은 내림차순으로 표현식으로 주문하고, 첫 번째 행을 선택하는 것입니다 : 오라클 12C 시작

select id, distance 
    from (select id, SQRT((POWER((x-(-28)),2) + POWER((y-(151)),2))) as distance 
      from table 
     order by distance desc) 
where rownum < 2 

을, 당신은 또한을 달성하기 fetch first n rows 구문을 이용할 수 있습니다 같은 일 :

0 :

select id, SQRT((POWER((x-(-28)),2) + POWER((y-(151)),2))) as distance 
    from table 
order by distance desc 
fetch first row only 

둘 이상의 행을 공유 동일한 최대 거리 값이, 당신은 또한 편리 관계를 지원하는 구문을 조절할 수있는 경우