20

RANK vs DENSE_RANK: 동점 처리의 차이

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 모두 포함