Spaces:
Sleeping
Sleeping
| -- Template: Moving Average (Rolling Average) | |
| -- Pattern: Calculate average over sliding time window | |
| -- Use Case: Smooth out fluctuations, identify trends, 7-day MA, 30-day MA | |
| SELECT | |
| order_date, | |
| daily_revenue, | |
| AVG(daily_revenue) OVER ( | |
| ORDER BY order_date | |
| ROWS BETWEEN 6 PRECEDING AND CURRENT ROW | |
| ) as moving_avg_7day, | |
| AVG(daily_revenue) OVER ( | |
| ORDER BY order_date | |
| ROWS BETWEEN 29 PRECEDING AND CURRENT ROW | |
| ) as moving_avg_30day, | |
| daily_order_count, | |
| AVG(daily_order_count) OVER ( | |
| ORDER BY order_date | |
| ROWS BETWEEN 6 PRECEDING AND CURRENT ROW | |
| ) as avg_orders_7day | |
| FROM ( | |
| SELECT | |
| DATE(order_date) as order_date, | |
| SUM(total_amount) as daily_revenue, | |
| COUNT(*) as daily_order_count | |
| FROM orders | |
| GROUP BY DATE(order_date) | |
| ) daily_stats | |
| ORDER BY order_date; | |
| -- Key Concepts: | |
| -- - Window function with ROWS BETWEEN for sliding window | |
| -- - N PRECEDING means previous N rows | |
| -- - CURRENT ROW includes the current row | |
| -- - For 7-day MA: use 6 PRECEDING (includes current = 7 total) | |
| -- - Useful for smoothing volatile metrics |