20분
RANK vs DENSE_RANK: 동점 처리의 차이
Day 1: 행 순서대로 번호 매기고 싶은데
RANK vs DENSE_RANK: 동점 처리의 차이
SQL 고급 - 윈도우 함수와 성능 최적화 > Day 1: 행 순서대로 번호 매기고 싶은데
학습 목표
RANK와 DENSE_RANK의 차이를 이해한다 상황에 맞는 함수를 선택할 수 있다
동점이 있을 때
점수 데이터:
에디터 로딩 중...
세 함수 비교
에디터 로딩 중...
결과:
에디터 로딩 중...
차이점 정리
| 함수 | 동점 처리 | 다음 순위 | 예시 |
|---|---|---|---|
| ROW_NUMBER | 동점 무시, 다른 번호 | 연속 | 1, 2, 3, 4, 5, 6 |
| RANK | 동점이면 같은 번호 | 건너뜀 | 1, 1, 3, 4, 4, 6 |
| DENSE_RANK | 동점이면 같은 번호 | 연속 | 1, 1, 2, 3, 3, 4 |
언제 무엇을 쓸까?
ROW_NUMBER
에디터 로딩 중...
동점이어도 무조건 1명만 필요할 때.
RANK
에디터 로딩 중...
공정한 순위가 필요할 때.
DENSE_RANK
에디터 로딩 중...
연속된 등급이 필요할 때.
실전 예제: 상위 3등급 상품
에디터 로딩 중...
공동 1등이 5명이면:
- RANK: 1, 1, 1, 1, 1 → rk <= 3에 5명 포함
- DENSE_RANK: 1, 1, 1, 1, 1 → drk <= 3에 등급 1, 2, 3 모두 포함