Running Totals & Moving Averages: Functions
Module: Window Functions
**Running Total Syntax:**
```sql
-- Basic running total
SUM(column) OVER (ORDER BY date_column)
-- Partitioned running total
SUM(column) OVER (
PARTITION BY group_column
ORDER BY date_column
)
-- Explicit frame (same as default for running totals)
SUM(column) OVER (
ORDER BY date_column
ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
)
```
**Moving Average Syntax:**
```sql
-- N-period moving average
AVG(column) OVER (
ORDER BY date_column
ROWS BETWEEN (N-1) PRECEDING AND CURRENT ROW
)
-- Examples:
-- 3-period: ROWS BETWEEN 2 PRECEDING AND CURRENT ROW
-- 7-period: ROWS BETWEEN 6 PRECEDING AND CURRENT ROW
-- 30-period: ROWS BETWEEN 29 PRECEDING AND CURRENT ROW
```
**Complete Examples:**
```sql
-- 1. Financial dashboard
SELECT
month,
monthly_revenue,
-- Year-to-date running total
SUM(monthly_revenue) OVER (ORDER BY month) as ytd_revenue,
-- 3-month moving average
AVG(monthly_revenue) OVER (
ORDER BY month
ROWS BETWEEN 2 PRECEDING AND CURRENT ROW
) as quarterly_avg,