학습 자료

RANK와 DENSE_RANK

RANK()DENSE_RANK() 함수는 그룹 내 행들에 순위 번호를 부여합니다.

보통 진행률, 점수, 가격 등 특정 지표로 데이터를 정렬해 비교할 때 사용합니다.

이 함수들은 OVER() 절을 사용하는 윈도우 함수입니다.


문법

RANK와 DENSE_RANK 문법
SELECT user_name, RANK() OVER (PARTITION BY course_name ORDER BY completion_rate DESC) AS rank, DENSE_RANK() OVER (PARTITION BY course_name ORDER BY completion_rate DESC) AS dense_rank FROM course_progress;
  • PARTITION BY는 강좌별로 행을 그룹화합니다
  • ORDER BY는 순위를 매기는 기준을 정의합니다

예시: 강좌 완료율 순위 매기기

두 개의 강좌, SQL 기초파이썬 입문에 대한 학습자 진행률 데이터가 있습니다.

각 학습자는 0부터 100까지의 completion_rate를 가지며, 강좌별로 이 값을 기준으로 순위를 매기고 싶습니다.

RANK()DENSE_RANK()를 사용해 같은 강좌 내에서 학습자 간 비교를 할 수 있습니다.

완료율로 사용자 순위 매기기
SELECT user_name, course_name, completion_rate, RANK() OVER (PARTITION BY course_name ORDER BY completion_rate DESC) AS rank, DENSE_RANK() OVER (PARTITION BY course_name ORDER BY completion_rate DESC) AS dense_rank FROM course_progress;

출력:

user_namecourse_namecompletion_raterankdense_rank
HeidiPython Intro9211
FrankPython Intro9022
GracePython Intro9022
EvePython Intro8543
BobSQL Basics9511
CharlieSQL Basics9511
AliceSQL Basics9232
DianaSQL Basics9043
  • RANK()는 동점 이후의 숫자를 건너뜁니다(예: 1 → 1 → 3)
  • DENSE_RANK()는 건너뛰지 않습니다(예: 1 → 1 → 2)
Quiz
0 / 1

NTILE(4) 함수는 데이터를 정확히 동일한 네 개의 그룹으로 나눕니다.

학습 자료

AI 튜터

디자인

업로드

수업 노트

즐겨찾기

도움말

코드 에디터

코드 실행
코드 생성

DB 테이블 구조

실행 결과