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 |
---|