month ASC용돈 기록장. 이번 달 얼마 썼나 / 지금까지 합쳐서 얼마 / 지난달보다 얼마나 늘었나.
| 월 | 이번 달 | 누적 | 전월 대비 |
|---|---|---|---|
| 1월 | 100 | 100 | (없음) |
| 2월 | 150 | 250 | +50.00% |
| 3월 | 120 | 370 | -20.00% |
누적은 '위 칸들을 다 더한 값'. 전월 대비는 '한 칸 위 값과 비교'.
SUM(매출) OVER (ORDER BY 월).LAG(매출) OVER (ORDER BY 월).OVER (ORDER BY 월) 에서 ORDER BY 를 빼면 전체 합계가 모든 줄에 똑같이 들어간다.묻는 것 · 윈도우 함수 기본기. 누적과 LAG.
SUM() OVER (ORDER BY) 로 누적.LAG() 로 전월 값을 끌어와 증감률.WITH m AS (
SELECT DATE_FORMAT(paid_date, '%Y-%m-01') AS mm, SUM(amount) AS rev
FROM payments GROUP BY mm
)
SELECT DATE_FORMAT(mm, '%Y-%m') AS month,
rev AS revenue,
SUM(rev) OVER (ORDER BY mm) AS cumulative_revenue,
ROUND(100.0 * (rev - LAG(rev) OVER (ORDER BY mm))
/ LAG(rev) OVER (ORDER BY mm), 2) AS mom_growth
FROM m
ORDER BY mm;'%Y-%m-01'(월 첫날)을 쓰고 출력은 '%Y-%m'. 문자열 '2026-1' 로 정렬하면 10월이 1월 뒤에 온다.LAG(rev) 를 별칭으로 재사용할 수 없다. 두 번 풀어 쓴다.“전년 동월 대비”면 LAG(rev, 12).