20분
ROW_NUMBER(): 무조건 연속 번호
Day 1: 행 순서대로 번호 매기고 싶은데
ROW_NUMBER(): 무조건 연속 번호
SQL 고급 - 윈도우 함수와 성능 최적화 > Day 1: 행 순서대로 번호 매기고 싶은데
학습 목표
ROW_NUMBER의 동작을 이해한다 PARTITION BY와 조합하는 방법을 익힌다
ROW_NUMBER()란?
무조건 1, 2, 3, 4... 연속 번호를 매긴다. 동점이어도 다른 번호!
기본 사용
에디터 로딩 중...
결과:
에디터 로딩 중...
동점인 이영희와 강미영이 다른 순위(4, 5)를 받았다.
부서별 순위 (PARTITION BY)
에디터 로딩 중...
결과:
에디터 로딩 중...
부서가 바뀌면 순위가 리셋된다!
실전: 부서별 상위 3명 선택
에디터 로딩 중...
CTE + WHERE로 상위 N명 필터링!
주의: ORDER BY 없으면?
에디터 로딩 중...
결과는 비결정적. 실행할 때마다 순서가 달라질 수 있다. 항상 ORDER BY를 명시하자.
ROW_NUMBER 활용 사례
| 상황 | 쿼리 |
|---|---|
| 페이지네이션 | WHERE rn BETWEEN 11 AND 20 |
| 중복 제거 | WHERE rn = 1 (그룹별 첫 번째만) |
| Top N | WHERE rn <= N |
| 샘플링 | WHERE rn % 10 = 1 (10개 중 1개) |