Database/MySQL
[SQL] RANK(), DENSE_RANK()
phyho
2024. 11. 27. 13:44
* RANK()
동일한 순위가 부여된 경우, 다음 순위를 건너뛴다.
* DENSE_RANK()
동일한 순위가 부여된 경우, 다음 순위를 건너뛰지 않고 연속적으로 부여한다..
ex)
SELECT
seq,
total_sales,
RANK() OVER (ORDER BY total_sales DESC) AS rank,
DENSE_RANK() OVER (ORDER BY total_sales DESC) AS dense_rank
FROM
sales;
결과는 아래와 같다.
seq |
total_sales | rank | dense_rank |
1 | 700 | 1 | 1 |
2 | 500 | 2 | 2 |
3 | 500 | 2 | 2 |
4 | 300 | 4 | 3 |
5 | 300 | 4 | 3 |
=> 동일한 값 2번, 3번에 대해 동일한 순위 2를 부여.
RANK() 는 중복된 데이터 수만큼 순위를 건너뛰어서, 다음 순위가 4가 됨.
DENSE_RANK() 는 순위를 건너뛰지 않고 다음 순위가 3이 됨.