정렬을 통해 나온 row를 keep(보관)해 놓고 사용할 수 있는 함수.
FIRST 또는 LAST와 함께 쓰인다.
ex) 부서별로 가장 높은 급여를 받는 사람을 구하고 싶을때
=> 부서별로 GROUP BY 후 MAX로 값을 추출하면 된다.
이때 추가적으로
ex) 부서별로 가장 오래 근무한 사람의 급여를 알고 싶을때
=> 입사일 기준으로 추출 후 급여를 알아야 하므로 서브 쿼리등의 방법을 사용해야 하는데
keep 함수를 이용해 간단히 해결할 수 있다.
SELECT DEPTNO
, MIN(SAL) KEEP ( DENSE_RANK FIRST ORDER BY HIREDATE ) AS JOIN_FIRST_SAL
, MAX(SAL) KEEP ( DENSE_RANK LAST ORDER BY HIREDATE ) AS JOIN_LAST_SAL
FROM EMP
GROUP BY DEPTNO;
DEPTNO 그룹별로 나누워
KEEP 함수로 HIREDATE의 값을 첫번째, 마지막 데이터를 보관해 두고
MIN, MAX에 맞게 SAL을 추출한다.
EXISTS, NOT EXISTS 사용 (0) | 2021.11.22 |
---|---|
[MyBatis] MySQL의 DUPLICATE (0) | 2021.10.27 |
계층형 쿼리 (0) | 2021.05.09 |
오라클 테이블 목록, 테이블정의서 추출쿼리 (0) | 2021.04.28 |
DATA_PUMP_DIR(데이터 펌프) 경로 확인 및 생성 (0) | 2021.03.31 |