SQL Practice Logo

SQLPractice Online

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,