점수 순위 옵션의 차이점

안녕하세요,

score ranking strategy에서 dense_rank / rank / row_number 옵션의 차이점을 아시는 분이 계신가요?

row_number () → bigint
파티션 내에서 현재 행의 번호를 1부터 시작하여 반환합니다.

rank () → bigint
현재 행의 순위를 간격이 있는 형태로 반환합니다. 즉, 동일한 순위(peer group)에 속하는 첫 번째 행의 row_number를 반환합니다.

dense_rank () → bigint
현재 행의 순위를 간격 없이 반환합니다. 이 함수는 기본적으로 peer group의 수를 세는 역할을 합니다.

결국 동점(tie) 처리 방식을 변경하는 것입니다.

  • row_number에서는 동점이 존재하지 않습니다.
  • rank의 경우, 5위에 두 개가 동점이면 다음 순서는 6위가 건너뛰어져 7위가 됩니다.
  • dense_rank의 경우, 5위에 두 개가 동점이면 다음 순서는 6위가 됩니다.