각 행을 남긴 채 주변을 계산해
GROUP BY는 여러 행을 한 행으로 접지만 윈도 함수는 원래 행을 그대로 둔 채 순위, 누적합, 이동 평균을 붙여. 그래서 주문 하나하나와 고객별 누적 금액을 같은 결과에서 볼 수 있어.
PARTITION과 ORDER가 계산의 창을 정해
SUM(total) OVER (PARTITION BY user_id ORDER BY placed_at)는 사용자마다 시간순 누적합을 계산해. 창의 경계를 명시하지 않으면 동점 처리 때문에 예상과 달라질 수 있어.
프레임은 현재 행 주변의 범위야
ROWS BETWEEN 6 PRECEDING AND CURRENT ROW는 현재 행과 앞선 6행, 곧 모두 7행을 대상으로 삼아. 날짜가 빠진 날이 있다면 7일과 7행은 다르다는 점을 기억해. 3행 이동 평균을 구할 때도 같은 원리야.