분석 함수를 이용하면, 특정 조건에 맞는 상위 혹은 하위 N개의 데이터만 추출하는 TOP n 쿼리도 쉽게 작성 가능하다.
각 부서별로 급여가 상위3위까지인 사원을 추출하는 쿼리는 아래와 같이 작성할 수 있다.
SELECT *
FROM (SELECT DEPARTMENT_ID
, EMP_NAME
, SALARY
, DENSE_RANK() OVER (PARTITION BY DEPARTMENT_ID ORDER BY SALARY DESC) DEP_RANK
FROM EMPLOYEES
)
WHERE DEP_RANK <= 3
SELECT DEPARTMENT_ID
, EMP_NAME
, SALARY
, RANK() OVER (PARTITION BY DEPARTMENT_ID ORDER BY SALARY DESC) DEP_RANK
FROM EMPLOYEES;
SELECT DEPARTMENT_ID
, EMP_NAME
, SALARY
, DENSE_RANK() OVER (PARTITION BY DEPARTMENT_ID ORDER BY SALARY) DEP_RANK
FROM EMPLOYEES;
같은 순위에 대해서 건너뛰지 않고 동일 랭크로 처리한다.
'Dev. Database' 카테고리의 다른 글
행열 변환2 (가로 -> 세로) (0) | 2019.05.08 |
---|---|
집계 쿼리 행열 변환 (가로 출력) (0) | 2019.05.08 |
WITH 절 - 서브쿼리 중복 사용 방지 (0) | 2019.05.02 |
복잡한 쿼리 효율적으로 작성하기 (0) | 2019.04.25 |
Mybatis에서 alias의 중요성 (0) | 2017.11.16 |