Menu
Coddy logo textTech

RANK & DENSE_RANK 함수

Coddy SQL 여정의 기초 섹션에 포함된 레슨. 72개 중 65번째.

ROW_NUMBER()는 순위 함수의 한 유형이며, 두 가지가 더 있습니다: RANK()DENSE_RANK().

RANK() 함수는 ROW_NUMBER()처럼 행에 번호를 매기지만, 동일한 행에는 같은 번호를 부여하고 번호를 건너뜁니다. DENSE_RANK()RANK()와 비슷하지만 번호를 건너뛰지 않습니다.

예:

idlevel
15
26
36
47
57
65
SELECT id, 
	ROW_NUMBER() OVER (ORDER BY level) as row_num,
	RANK() OVER (ORDER BY level) as row_rank,
	DENSE_RANK() OVER (ORDER BY level) as row_dense_rank
FROM table1

다음 결과를 반환합니다:

idrow_numrow_rankrow_dense_rank
1111
6211
2332
3432
4553
5653

설명:

  • ROW_NUMBER(): 항상 고유함: 1, 2, 3, 4, 5, 6
  • RANK():
    • level 5 (2개 행): 둘 다 rank 1을 받음
    • level 6 (2개 행): 둘 다 rank 3을 받음 (2를 건너뜀)
    • level 7 (2개 행): 둘 다 rank 5를 받음 (4를 건너뜀)
  • DENSE_RANK():
    • level 5 (2개 행): 둘 다 rank 1을 받음
    • level 6 (2개 행): 둘 다 rank 2를 받음 (건너뛰지 않음)
    • level 7 (2개 행): 둘 다 rank 3을 받음 (건너뛰지 않음)
challenge icon

챌린지

쉬움

사용 가능한 테이블 및 열:

  • medals: region, medal_color, medal_count

지역, 총 메달 수(색상에 관계없이 모든 메달의 합계) 및 두 가지 유형의 순위를 표시하는 쿼리를 작성하세요:

  1. regular_rank(동점 순위 사이에 간격이 있음) — 메달 합계를 기준으로
  2. dense_rank(동점 순위 사이에 간격이 없음) — 메달 합계를 기준으로

결과를 다음 기준으로 정렬하세요:

order by total_medals desc, region asc

직접 해보기

quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

기초의 모든 레슨

직접 연습해 보세요: SQL 플레이그라운드