* 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이 됨.
'Database > MySQL' 카테고리의 다른 글
[DB문법] 집계함수, group by, grouping, rollup (0) | 2024.03.04 |
---|---|
[DB문법] 날짜&시간, case when, null값 처리 (0) | 2024.02.27 |
[데이터베이스(강의)] 9. stored function (0) | 2024.02.07 |
[데이터베이스(강의)] 8. SQL로 데이터 조회 (group by, aggregate function, order b) (0) | 2024.02.06 |
[데이터베이스(강의)] 8. SQL로 데이터 조회 (join) (0) | 2024.02.05 |