본문 바로가기
SQL

[SQL] RANK(), DENSE_RANK(), ROW_NUMBER 개념 및 차이

by seung_nari 2022. 11. 1.

RANK 함수

  • RANK 함수는 ORDER BY를 포함한 쿼리문에서 특정 항목에 대한 순위를 구하는 함수이다. 이 때 특정범휘 (PARTITION BY) 내에서 순위를 구할수도 있고 전체 데이터에 대한 순위를 구할 수도 있다.
  • 동일한 값에 대해서는 동일한 순서를 부여하게 된다.

 

DENSE_RANK 함수

  • DENSE_RANK 함수는 동일한 순위를 하나의 건수로 취급한다.
  • DENSE_RANK 함수는 공동등수를 하나의 등수로 보고 다음 등수를 매긴다.

 

ROW_NUMBER 함수

  • ROW_NUMBER 함수는 동일한 값이라도 고유한 순위를 부여한다.
  • 동일한 값의 순위를 정해야 할 때 오라클의 경우 ROWID가 적은 행이 먼저 나온다.

 

예시)

 

RANK() 는 동일한 값일 경우 같은 등수로 표기.

DENSE_RANK() 는 RANK() 랑 동일하되 공동등수를 하나의 등수로 보고 다음 등수를 매긴다.

ROW_NUMBER 는 중복 허용없이 1~5위까지 나온다.

 

 

출처

댓글