본문으로 건너뛰기
실습하기

ROW_NUMBER와 NTILE

ROW_NUMBER()NTILE(n)은 정렬된 데이터에서 순위를 매기거나 그룹을 나눌 때 유용한 SQL 윈도 함수입니다.

  • ROW_NUMBER(): 지정한 정렬 기준에 따라 각 행에 고유한 순번을 부여
  • NTILE(n): 정렬된 데이터를 n개의 균등한 그룹으로 나눔 (사분위, 십분위 등 분위 분석에 활용)

문법

ROW_NUMBER와 NTILE 문법
SELECT
column1,
ROW_NUMBER() OVER (ORDER BY column2) AS row_num,
NTILE(n) OVER (ORDER BY column2) AS group_id
FROM table_name;
  • OVER (ORDER BY ...) : 순서를 매기기 위해 정렬 기준을 지정
  • ROW_NUMBER() : 정렬된 순서대로 고유한 번호를 생성
  • NTILE(n) : 정렬된 행을 n개의 거의 동일한 크기의 그룹으로 분할

예시: 학습자 점수 순위와 사분위

아래 예시는 학습자의 final_score를 기준으로 순위를 매기고, 점수를 4개의 사분위 그룹으로 나눕니다.

학습자 순위 및 사분위 그룹화
SELECT
name,
final_score,
ROW_NUMBER() OVER (ORDER BY final_score DESC) AS row_num,
NTILE(4) OVER (ORDER BY final_score DESC) AS quartile
FROM course_progress;

결과 예시

namefinal_scorerow_numquartile
Alex9811
Sara9521
Daniel9132
Mia9042
Emma8653
Noah8363
John8074
Leo7884
  • ROW_NUMBER() → 점수를 기준으로 순위를 부여
  • NTILE(4) → 학습자를 네 개의 사분위 그룹으로 균등 분할

활용 포인트

  • ROW_NUMBER(): 중복 점수와 상관없이 순위를 매겨야 할 때 적합
  • NTILE(n): 분위 분석, 등급 나누기, 상위 퍼센타일 계산에 효과적

다음 내용이 궁금하다면?

코드프렌즈 PLUS 멤버십 가입 or 강의를 등록해 주세요!