SQL
정의
창 (Window)을 열고 그 안에서 계산합니다.행과 행 간의 비교, 연산, 정의를 하기 위해 사용되는 함수입니다.
일반적인 집계 함수인 GROUP BY와 달리, 행을 줄이지 않고 각 행은 그대로 둔 채 옆에 집계 결과나 순위 결과를 붙여주는 것이 특징입니다.
여기서 윈도우(Window)란 특정 범위를 지정하는 창문과 같아서, 현재 행을 기준으로 앞뒤 몇 행까지 묶어서 계산할 수 있습니다.
순위를 매기는 함수, 누적합이나 평균을 계산하는 함수 이전·다음 행을 참조하는 함수 등이 있습니다.
이러한 특징 덕분에 매출의 누적 합계, 부서별 순위, 전월 대비 증감 같은 행 단위 분석 작업에 자주 활용됩니다.
구조
행과 행 간에 비교, 연산, 정의를 하기 위해 사용되는 함수를 의미합니다.<윈도우 함수>(컬럼)
OVER (
PARTITION BY <그룹 기준>
ORDER BY <정렬 기준>
ROWS ... or RANGE ...
)
윈도우 함수: SUM, AVG, RANK, ROW_NUMBER, LAG, LEAD 등
PARTITION BY: 그룹을 나눕니다. (없으면 전체 테이블이 하나의 그룹이 됩니다.)
ORDER BY: 그룹 내에서 정렬 기준을 정해 순위나 이전/다음 행 참조할 때 사용합니다.
ROWS / RANGE: 윈도우(창)의 범위를 지정 (예: 앞 3행 ~ 현재 행까지)