윈도우 함수로 데이터 분석하기
윈도우 함수로 데이터 분석하기
이 주제는 Snowflake에서 윈도우 함수(window function)를 사용해 데이터를 분석하는 방법을 설명해요. 윈도우 함수를 사용하면 행의 "윈도우"를 기준으로 계산을 수행할 수 있고, 이는 누적 합계, 이동 평균, 순위 같은 분석에 유용해요.
본문
윈도우 함수는 일반 집계 함수와 달리 결과의 행 수를 줄이지 않아요. 대신 각 행에 대해 그 행이 속한 윈도우(행 집합)를 기준으로 계산한 값을 반환해요.
윈도우 함수 사용법
윈도우 함수는 일반적으로 OVER 절과 함께 사용돼요. 기본 구조:
SELECT
<column>,
<window_function>() OVER (PARTITION BY <col> ORDER BY <col> [ROWS <frame>])
FROM <table>;
PARTITION BY— 윈도우를 나눌 기준을 지정해요. 생략하면 전체 결과가 하나의 윈도우예요.ORDER BY— 윈도우 안의 행 순서를 지정해요. 순위 계산에 중요해요.- 프레임(frame) — 각 행에 대해 고려할 행 집합의 범위를 지정해요.
흔한 사용 예
누적 합계(cumulative sum):
SELECT
date,
amount,
SUM(amount) OVER (ORDER BY date) AS running_total
FROM sales;
순위(ranking):
SELECT
category,
product,
sales,
RANK() OVER (PARTITION BY category ORDER BY sales DESC) AS rank
FROM product_sales;
이동 평균(moving average):
SELECT
date,
sales,
AVG(sales) OVER (ORDER BY date ROWS BETWEEN 6 PRECEDING AND CURRENT ROW) AS moving_avg
FROM daily_sales;
윈도우 함수 목록
Snowflake는 많은 윈도우 함수를 지원해요. 예: ROW_NUMBER, RANK, DENSE_RANK, NTILE, LAG, LEAD, FIRST_VALUE, LAST_VALUE, NTH_VALUE, SUM, AVG, MIN, MAX, COUNT 등. 숫자 집계 함수 대부분은 OVER 절과 함께 윈도우 함수로도 사용할 수 있어요.
각 함수의 자세한 문법과 인자는 SQL 레퍼런스의 해당 함수 문서를 참고해요.