My Space

반응형

정렬을 통해 나온 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을 추출한다.

 

공유하기

facebook twitter kakaoTalk kakaostory naver band
loading