SQL 기본 및 활용

21. 윈도우 함수 — SQLD, 순위 3종과 OVER 절 정리

CBT 전자문제집 편집팀
#SQLD#윈도우함수#RANK#DENSE_RANK#ROW_NUMBER

윈도우 함수 는 행을 그룹으로 묶지 않고(행은 그대로 두고) 각 행에 순위·누적·이전값 같은 계산을 붙이는 함수입니다. 시험은 순위 3종의 결과 차이 를 결과 예측으로 묻습니다.

이 단원, 시험에서 어디에 나오나

  • 제2과목 「SQL 기본 및 활용」 단원입니다.
  • RANK·DENSE_RANK·ROW_NUMBER의 동점 처리 차이 가 핵심 출제 포인트입니다.

① 순위 함수 3종 — 동점 처리가 다르다

순위 함수 3종 결과 비교 도식. 동점 90이 둘일 때 RANK는 1,2,2,4, DENSE_RANK는 1,2,2,3, ROW_NUMBER는 1,2,3,4

그림 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 절 — 그룹과 순서

윈도우 함수 구조 도식. OVER 안에서 PARTITION BY로 그룹, ORDER BY로 순서, LAG는 이전 행, LEAD는 다음 행

그림 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=다음 행.

참고 출처

CBT 전자문제집 편집팀

자격증 개념과 기출 유형을 쉽게 정리합니다.

관련 글