본문으로 건너뛰기
실습하기

윈도 함수 소개

윈도 함수(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 강의를 등록해 주세요!