STUDY/SQL

RANK, DENSE_RANK, ROW_NUMBER : 데이터 값에 순위 매기기

sorrow16 2021. 4. 28. 11:09

RANK, DENSE_RANK, ROW_NUMBER 는 데이터 값에 순위를 매기는 함수입니다. 순위를 매기는 것은 동일하지만 사용법이 조금씩 다릅니다. 즉, 공통 순위가 있을 때 출력을 어떻게 하느냐에 따라 용도가 달라집니다. 차이는 다음과 같습니다.

 

함수설명순위 예시
RANK공통 순위를 출력하되 공통 순위만큼 건너뛰어 다음 순위를 출력한다.1, 2, 2, 4.....
DENSE_RANK공통 순위를 출력하되 건너뛰지 않고 바로 다음 순위를 출력한다.1, 2, 2, 3.....
ROW_NUMBER공통 순위를 없이 출력한다.1, 2, 3, 4.....

 

 

 

 

예시> RANK, DENSE_RANK, ROW_NUMBER 함수를 각각 이용해 employees 테이블의 salary 값이 높은 순서대로 순위를 매겨 출력해 보세요.

 

SELECT employee_id, 
       salary,
       RANK() OVER(ORDER BY salary DESC) RANK_급여,
       DENSE_RANK() OVER(ORDER BY salary DESC) DENSE_RANK_급여, 
       ROW_NUMBER() OVER(ORDER BY salary DESC) ROW_NUMBER_급여
FROM employees;

 

 

 

 

[실행결과]