본문 바로가기
[스파르타코딩클럽]데이터분석 과정/SQL

[SQL] 순위 매기기

by doo_ 2024. 1. 1.

1. RANK

그룹 내 현재 행의 순위를 반환한다. 동점인 경우에는 동일한 순위를 반환하며, 다음 순위는 그 수만큼 건너뛰어 매겨진다.

> 1, 2, 2, 4, 5, ---

 

2. DENSE_RANK

그룹 내 현재 행의 순위를 반환한다. 동점인 경우에 동일한 순위를 반환하며, rank와 다른 점은 다음 순위는 연속된 값으로 이어진다.

> 1, 2, 2, 2, 3, 4, 4, 5 ---

 

3. ROW_NUMBER

그룹 내 현재 행의 수를 반환한다. 행 마다 다른 값을 반환한다. 즉 공동 순위를 허용하지 않고 순차적으로 순위를 매길 때 활용한다. 정렬 기준이 2개 이상일 때 사용하기 좋다.

 

기본 형태는 다음과 같다.

rank | dense_rank | row_number() over(partition by column1 order by cal2)
-- 어떤 partition안에서 어떤 기준으로 정렬할 것인가)