Database/SQL

[MariaDB] RANK(), DENSE_RANK(), ROW_NUMBER() 차이

bisi 2021. 3. 17. 08:45

SQL 구문에서 순위를 매길때, 

 

RANK(), DENSE_RANK(), ROW_NUMBER() 3가지 방법을 사용할 수 있다. 

 

3가지 방법은 동률을 처리하는 방법에 따라 사용 목적이 다르다.

 

 

  • RANK() : 동률을 같은 등수로 처리
  • DENSE_RANK() : 동률을 같은 등수로 처리하지만, 그 다음 등수를 동률의 수 만큼 제외하지 않고 바로 등수로 매김.
  • ROW_NUMBER() : 동률을 반영하지 않는다. 즉, 동일한 등수는 존재하지 않고 모든 행은 다른 등수를 가진다.

 

 

예시
  • 원본 테이블 데이터

 

  • RANK 구문
select name,
       goals,
       RANK() over (ORDER BY goals desc) as 'RANK',
       DENSE_RANK() over (ORDER BY goals desc) AS 'Dense Rank',
       ROW_NUMBER() over (ORDER BY goals desc) as 'Row Number'
from player;

 

  • 결과

'Database > SQL' 카테고리의 다른 글

[MariaDB] Floor Datatype  (0) 2021.03.25