윈도우 함수 는 행을 그룹으로 묶지 않고(행은 그대로 두고) 각 행에 순위·누적·이전값 같은 계산을 붙이는 함수입니다. 시험은 순위 3종의 결과 차이 를 결과 예측으로 묻습니다.
이 단원, 시험에서 어디에 나오나
- 제2과목 「SQL 기본 및 활용」 단원입니다.
- RANK·DENSE_RANK·ROW_NUMBER의 동점 처리 차이 가 핵심 출제 포인트입니다.
① 순위 함수 3종 — 동점 처리가 다르다
그림 1. 동점(90)이 둘일 때: RANK는 다음 순위를 건너뛰고, DENSE_RANK는 안 건너뛰며, ROW_NUMBER는 무조건 유일 연속값. (자작 도식)
| 함수 | 동점 처리 | 예시(100·90·90·80) |
|---|---|---|
| RANK | 같은 순위 후 건너뜀 | 1, 2, 2, 4 |
| DENSE_RANK | 같은 순위 후 안 건너뜀 | 1, 2, 2, 3 |
| ROW_NUMBER | 동점도 유일 연속 | 1, 2, 3, 4 |
핵심: RANK는 4로 건너뛰고, DENSE_RANK는 3으로 이어집니다. 이 차이가 최다 출제.
② OVER 절 — 그룹과 순서
그림 2. OVER(PARTITION BY 그룹 ORDER BY 순서). LAG=이전 행, LEAD=다음 행. (자작 도식)
RANK() OVER (PARTITION BY 부서 ORDER BY 급여 DESC)
PARTITION BY: 그룹을 나눔(부서별로 순위 매기기). 없으면 전체가 한 그룹.ORDER BY: 그룹 안 순서. 순위 함수는 ORDER BY 필수.
③ LAG · LEAD — 이전·다음 행
LAG(컬럼, n): n행 이전 값을 가져옴.LEAD(컬럼, n): n행 다음 값을 가져옴.- 증감·전월 대비 계산에 자주 사용합니다.
자주 틀리는 함정
- RANK ↔ DENSE_RANK 혼동 — 건너뜀(RANK=4) vs 이어짐(DENSE_RANK=3).
- 순위 함수에 ORDER BY 누락 — OVER 안에 ORDER BY가 없으면 순위를 매길 수 없음.
- PARTITION BY 유무 — 부서별인지 전체인지에 따라 순위가 달라짐.
- LAG ↔ LEAD 방향 — LAG=이전, LEAD=다음.
한 장 정리 (암기 카드)
- RANK(건너뜀 1,2,2,4)·DENSE_RANK(안 건너뜀 1,2,2,3)·ROW_NUMBER(유일 연속).
OVER(PARTITION BY 그룹 ORDER BY 순서)— 순위엔 ORDER BY 필수.- LAG=이전 행, LEAD=다음 행.
참고 출처
- 시험 과목·출제기준: 한국데이터산업진흥원(KDATA) 데이터자격검정 (2026년 7월 확인)
- 윈도우 함수 동작은 ANSI SQL·오라클 표준에 근거하며, 본문 설명·예시·도식은 자작입니다.