윈도 함수 소개
윈도 함수(Window Function)
는 현재 행을 포함한 관련 행 집합을 기반으로 계산을 수행하면서도, 각 행을 그대로 유지할 수 있게 해주는 SQL 기능입니다.
순위, 누계, 이동 평균, 이전/다음 값 비교 등 분석용 계산을 더 직관적으로 작성할 수 있습니다.
윈도 함수는 언제 사용할까
전통적인 SQL 집계 함수(SUM
, AVG
등)는 GROUP BY
와 함께 사용하면 개별 행을 요약해 그룹 단위로만 결과를 반환합니다.
하지만 분석 상황에서는 개별 행을 유지하면서 동시에 비교나 순위를 매기는 일이 자주 필요합니다. 이럴 때 윈도 함수가 유용합니다.
다음과 같은 경우에 자주 활용됩니다.
- 그룹 내 순위 및 행 번호 부여 (
RANK
,ROW_NUMBER
) - 누적 합계 및 이동 평균 계산 (
SUM() OVER
,AVG() OVER
) - 이웃한 행의 값과 비교 (
LAG
,LEAD
) - 그룹별 최대·최소값을 개별 행과 함께 표시
윈도 함수 vs 집계 함수
예를 들어, 다음 질문을 생각해 봅시다.
"각 학생의 점수는 얼마이며, 학급 평균과 비교하면 어떨까요?"
- 집계 함수 → 학급별 평균 점수만 보여주고, 개별 학생 점수는 표시할 수 없음
- 윈도 함수 → 개별 학생 점수와 학급 평균 점수를 같은 행에서 동시에 보여줄 수 있음
즉, 윈도 함수는 분석에 필요한 행 단위와 그룹 단위의 정보를 한 번에 다룰 수 있습니다.
OVER
절
윈도 함수는 OVER
절을 통해 계산할 범위를 지정합니다. OVER
절에는 다음 요소를 포함할 수 있습니다.
PARTITION BY
: 그룹별로 윈도를 분할 → 예: 부서별, 과목별 계산을 따로 수행ORDER BY
: 윈도 내에서 계산 순서를 지정 → 예: 누적 합계, 순위 계산 시 필요
윈도 함수는 분석, 리포팅, 대시보드에서 자주 활용되며, RANK()
, ROW_NUMBER()
, LAG()
, LEAD()
같은 다양한 함수와 함께 사용됩니다.
다음 내용이 궁금하다면?
코드프렌즈 PLUS 멤버십 가입 or 강의를 등록해 주세요!