Running average

Time Series Analysis in PostgreSQL

Jasmin Ludolf

Content Developer, DataCamp

What is a running average?

  • Running average:
    • Average of a sequence of values

sliding window

|values|running_average|
|------|---------------|
|     1|              1|

| 5| 3|
| 7| 4.33|
Time Series Analysis in PostgreSQL

Calculate the running average

SELECT 
    id,
    ts,
    views,
    AVG(views) OVER (ORDER BY ts)
      AS running_avg_views

FROM dc_news_fact WHERE id = '12121' ORDER BY ts;
|   id|                 ts|views|running_avg_views|
|-----|-------------------|-----|-----------------|
|12121|2015-12-27 17:14:16| null|             null|
|12121|2015-12-27 17:34:16|   23|23.00000000000000|
|12121|2015-12-27 17:54:16|   10|16.50000000000000|
|12121|2015-12-27 18:14:16|    8|13.66666666666666|
|12121|2015-12-27 18:34:16|    4|11.25000000000000|
|12121|2015-12-27 18:54:16|    7|10.40000000000000|
|12121|2015-12-27 19:14:16|    0|8.666666666666666|
...
Time Series Analysis in PostgreSQL

Running average for multiple time series

SELECT 
    id,
    ts,
    views,
    AVG(views) OVER (ORDER BY ts)
      AS running_avg_views
FROM dc_news_fact
WHERE id = '12121'
ORDER BY ts;
SELECT 
    id,
    ts,
    views,
    AVG(views) OVER(
      PARTITION BY id ORDER BY ts)
      AS running_avg_views
FROM dc_news_fact
ORDER BY id, ts;
Time Series Analysis in PostgreSQL

Running average over multiple time series: result

|   id|                 ts|views|  running_avg_views|
|-----|-------------------|-----|-------------------|
|12121|2015-12-27 17:14:16|     |                   |
|12121|2015-12-27 17:34:16|   23|23.0000000000000000|
...             ...           ...        ...
|12211|2015-12-28 03:17:18|     |                   |
|12211|2015-12-28 03:37:18|    4| 4.0000000000000000|
|12211|2015-12-28 03:57:18|    2| 3.0000000000000000|
|12211|2015-12-28 04:17:18|    2| 2.6666666666666667|
...
Time Series Analysis in PostgreSQL

Let's practice!

Time Series Analysis in PostgreSQL

Preparing Video For Download...