ROW_NUMBER와 NTILE
ROW_NUMBER()
와 NTILE(n)
은 SQL에서 정렬된 데이터를 분석하는 데 유용한 윈도우 함수입니다.
ROW_NUMBER()
는 지정한 정렬 기준에 따라 각 행에 고유한 순번을 부여합니다.NTILE(n)
은 정렬된 행을n
개의 거의 동일한 크기의 그룹으로 나눕니다. 사분위, 십분위 등을 만들 때 유용합니다.
Syntax
ROW_NUMBER()
와 NTILE(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 ...)
는 번호를 매기기 전에 행을 어떻게 정렬할지 정의합니다NTILE(n)
은 정렬된 행을n
개의 그룹으로 나눕니다
예시: 강의 수강 현황
두 개의 강의, SQL 기초와 파이썬 입문에 대한 사용자 수강 현황이 있습니다.
각 학습자에게는 0부터 100까지의 최종_점수
가 있으며, 이 값을 기준으로 강의 내에서 순위를 매기고자 합니다.
학습자에게 순위를 매기고 사분위 그룹을 지정하려면 ROW_NUMBER()
와 NTILE(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;
Output:
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 테이블 구조
실행 결과