반응형
Oracle 오라클 KEEP()함수 사용법 그룹함수로 조회한 행 중에 다른 컬럼 가져오는 방법
그룹함수로 조회한 행 중에 다른 컬럼 가져오는 방법
쿼리를 짜다보면 가장 큰, 가장 작은 값을 가져와야 할 때가 있다.
이럴 땐 MAX() 나 MIN()함수를 사용하여 해당 컬럼을 가져온다.
그런데, 이렇게 MAX 나 MIN 함수로 가져온 값이 있는 행중에 다른 컬럼을 가져와야 한다면
어떻게 해야 할까?
KEEP의 사용법을 모르는 경우라면 서브쿼리를 사용하여 가져오려 할 것이다.
예)
SELECT 컬럼A
FROM 테이블A
WHERE 컬럼B = (SELECT MAX(컬럼B)
FROM 테이블A)
물론 값은 같다.
하지만 조건없이 구현이 가능하다.
KEEP()함수을 사용하여 보자.
예)
SELECT MAX(컬럼A)KEEP(DENSE_RANK FIRST ORDER BY 컬럼B DESC)
FROM 테이블A
설명은 하자면 컬럼B로 ORDER BY 한 후 가장 큰값이 있는 행의 컬럼A를 가져오는 것이다.
이처럼 간단한 경우라면 서브쿼리를 쓰던 KEEP() 함수를 쓰던
별 차이가 없어 보이지만
쿼리가 복잡해지고 서브에 서브쿼리를 사용하는 경우라면 간단히 원하는 값을 가져올 수 있으니
유용하게 사용하자.!
반응형
'Database > SQL' 카테고리의 다른 글
Oracle 오라클 자음 초성 추출 함수, 자음으로 검색, 초성 검색 (0) | 2016.04.18 |
---|---|
오라클 부분 조회, 페이징 처리, ROW_NUMBER(), ROWNUM, 원하는 행 조회 (0) | 2016.01.14 |
오라클 Oracle 가장큰값, 두번째 큰값, 가장작은값, 두번째로 작은값 구하기 GREATEST, LEAST (0) | 2015.11.25 |
ORACLE LISTAGG 여러 행을 하나의 컬럼으로 가져오기 (0) | 2015.08.19 |
ORACLE MERGE 조건에 따라 INSERT, UPDATE (0) | 2015.08.19 |
댓글