Dev. Database
[분석함수] RANK(), DENSE_RANK()
devock
2019. 5. 2. 00:50
분석 함수를 이용하면, 특정 조건에 맞는 상위 혹은 하위 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;
같은 순위에 대해서 건너뛰지 않고 동일 랭크로 처리한다.