Moyenne mobile

Analyse de séries chronologiques dans PostgreSQL

Jasmin Ludolf

Content Developer, DataCamp

Qu'est-ce qu'une moyenne mobile ?

fenêtre glissante

Analyse de séries chronologiques dans PostgreSQL

Moyennes mobiles

  • Indiquez les lignes à moyenner
  • Avec la clause ROWS BETWEEN
  • UNBOUNDED PRECENDING AND CURRENT ROW : prend toutes les lignes précédentes depuis la ligne courante
SELECT 
id,
views,
AVG(views) OVER(
    PARTITION BY id
    ORDER BY ts
    ROWS BETWEEN
    UNBOUNDED PRECEDING AND CURRENT ROW)
    AS running_avg_views
FROM dc_news_fact;
Analyse de séries chronologiques dans PostgreSQL

Calculer une moyenne mobile

  • Calculez la moyenne mobile sur cinq lignes :
    • ROWS BETWEEN 4 PRECEDING AND CURRENT ROW

 

(1) Ligne précédente

(2) Ligne précédente

(3) Ligne précédente

(4) Ligne précédente

(5) Ligne courante

Analyse de séries chronologiques dans PostgreSQL

Calculer une moyenne mobile

SELECT
    id,
    ts,
    views,

AVG(views) OVER (
ORDER BY ts
ROWS BETWEEN 4 PRECEDING AND CURRENT ROW) AS moving_average_five
FROM dc_news_fact;
Analyse de séries chronologiques dans PostgreSQL

Calculer une moyenne mobile : résultat

|   id|                 ts|views|moving_average_five|
|-----|-------------------|-----|-------------------|
|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| 5.8000000000000000|
...
Analyse de séries chronologiques dans PostgreSQL

Calculer une moyenne mobile sans la ligne courante

  • ROWS BETWEEN 5 PRECEDING AND 1 PRECEDING
SELECT
    stock_symbol,
    day,
    daily_avg,
    AVG(daily_avg) OVER(
        PARTITION BY stock_symbol
        ORDER BY day
        ROWS BETWEEN 5 PRECEDING AND 1 PRECEDING
        ) AS avg_prev_five
FROM daily_stock_averages
ORDER BY stock_symbol, day;
Analyse de séries chronologiques dans PostgreSQL

Passons à la pratique !

Analyse de séries chronologiques dans PostgreSQL

Preparing Video For Download...