DataBase/Oracle

SQL - RANK, DENSE_RANK

jddng 2022. 1. 22. 23:37
728x90
반응형

RANK 함수

  • 동일한 순위가 있을시 동일 순위 개수만큼 건너 뛰고 다음 순위로 계산
    EX) 1, 1, 3, 3, 3, 3, 7.....

 

DENSE_RANK

  • 동일한 순위가 있어도 이후 등수를 순서대로 처리
    EX) 1, 1, 2, 2, 2, 2, 3, 4, .....

 

-- 직원 정보에서 급여를 가장 많이 받는 순으로 이름, 급여, 순위 조회
-- RANK 함수 사용
SELECT
       E.EMP_NAME
     , E.SALARY
     , RANK() OVER(ORDER BY E.SALARY DESC) 순위
  FROM EMPLOYEE E;

-- DENSE_RANK 함수 사용
SELECT
       E.EMP_NAME
     , E.SALARY
     , DENSE_RANK() OVER(ORDER BY E.SALARY DESC) 순위
  FROM EMPLOYEE E;

-- TOP5
SELECT
       V.*
  FROM (SELECT
               E.EMP_NAME
             , E.SALARY
             , RANK() OVER(ORDER BY E.SALARY DESC) 순위
          FROM EMPLOYEE E
       ) V
WHERE V.순위 <= 5;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

728x90
반응형