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;
결과 예시
name | final_score | row_num | quartile |
---|---|---|---|
Alex | 98 | 1 | 1 |
Sara | 95 | 2 | 1 |
Daniel | 91 | 3 | 2 |
Mia | 90 | 4 | 2 |
Emma | 86 | 5 | 3 |
Noah | 83 | 6 | 3 |
John | 80 | 7 | 4 |
Leo | 78 | 8 | 4 |
ROW_NUMBER()
→ 점수를 기준으로 순위를 부여NTILE(4)
→ 학습자를 네 개의 사분위 그룹으로 균등 분할
활용 포인트
ROW_NUMBER()
: 중복 점수와 상관없이 순위를 매겨야 할 때 적합NTILE(n)
: 분위 분석, 등급 나누기, 상위 퍼센타일 계산에 효과적
Quiz
0 / 1
이전 행의 값을 조회할 수 있게 해주는 SQL 윈도 함수는 무엇인가요?
이전 행의 값을 조회하는 SQL 함수는 입니다.
LEAD
LAG
ROW_NUMBER
RANK
학습 자료
AI 튜터
디자인
업로드
수업 노트
즐겨찾기
도움말
코드 에디터
코드 실행
코드 생성
DB 테이블 구조
실행 결과