Time Series Analysis in PostgreSQL
Jasmin Ludolf
Content Developer, DataCamp

|values|running_average| |------|---------------| | 1| 1|| 5| 3|| 7| 4.33|
SELECT id, ts, views, AVG(views) OVER (ORDER BY ts) AS running_avg_viewsFROM 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|
...
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;
|   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