IntermediateWindow Functions
7-day moving average of daily sales
The query
SQL
WITH daily AS (
SELECT
order_date::DATE AS day,
SUM(total) AS daily_revenue
FROM orders
WHERE status = 'completed'
GROUP BY order_date::DATE
)
SELECT
day,
daily_revenue,
ROUND(AVG(daily_revenue) OVER (
ORDER BY day
ROWS BETWEEN 6 PRECEDING AND CURRENT ROW
), 2) AS ma_7d
FROM daily
ORDER BY day;Note
“7-day moving average smooths spikes in daily revenue. ROWS BETWEEN 6 PRECEDING = window of 7 days.