Skip to main content
이 문서는 데이터 웨어하우징 섹션의 일부입니다.

윈도우 함수란?

윈도우 함수(Window Function)GROUP BY 없이도 각 행에 대해 관련된 행들의 집합(윈도우) 을 기준으로 계산을 수행하는 함수입니다. 일반 집계 함수와 달리 행의 개수를 줄이지 않고, 각 행에 분석 결과를 추가합니다.
💡 비유: 윈도우 함수는 “나의 성적이 반 전체에서 몇 등인지” 알려주는 것과 같습니다. 반 전체 성적표가 유지되면서, 각 학생 옆에 순위가 추가됩니다.

OVER 절 기본 구문


순위 함수

ROW_NUMBER, RANK, DENSE_RANK, NTILE

순위 함수 비교

실전 예제: 부서별 급여 순위


집계 윈도우 함수

SUM, AVG, COUNT, MIN, MAX를 윈도우 함수로 사용하면 행을 줄이지 않고 집계 결과를 추가합니다.

누적 합계와 이동 평균


오프셋 함수: LAG, LEAD, FIRST_VALUE, LAST_VALUE

LAG / LEAD (전후 행 참조)

FIRST_VALUE / LAST_VALUE

⚠️ LAST_VALUE 주의사항: 프레임을 명시하지 않으면 기본 프레임(ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)이 적용되어, 현재 행까지만 보입니다. 전체 파티션의 마지막 값을 얻으려면 ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING을 명시해야 합니다.

프레임 지정: ROWS BETWEEN, RANGE BETWEEN

프레임 구문

ROWS vs RANGE


QUALIFY 절

QUALIFY는 윈도우 함수의 결과를 서브쿼리 없이 직접 필터링 하는 Databricks SQL 전용 절입니다.

QUALIFY 활용 패턴


실전 예제

매출 순위와 점유율 분석

고객 이탈 분석 (마지막 구매 이후 경과일)


정리


참고 링크