ConsigneSur la table orders, calcule le CA par journée de commande, puis sa moyenne mobile sur les 7 dernières lignes (ma_7d) et sur les 30 dernières (ma_30d) avec des window frames ROWS. Attention : orders n'a pas une ligne par jour calendaire, ROWS compte donc des lignes et non des jours. Ajoute une colonne trend valant 'hausse' si la MM7 dépasse la MM30, sinon 'baisse'. Trie par jour.
Une moyenne mobile lisse les variations quotidiennes pour révéler une tendance. Technique : avg(...) over (order BY jour rows between 6 preceding and current row) moyenne les 7 dernières lignes.
Exemple (table trafic, une ligne par jour) :
SELECT jour, visites, AVG(visites) OVER ( ORDER BY jour ROWS BETWEEN 6 PRECEDING AND CURRENT ROW ) AS moyenne_7jFROM trafic;rows between ... définit la fenêtre glissante (ici les 7 dernières lignes, soit bien 7 jours puisque la table trafic a une ligne par jour).
Attention : rows compte des lignes, pas des jours. Sur une table où certains jours n'ont aucune ligne, la « moyenne 7 jours » couvre en réalité beaucoup plus de temps : sur la table orders, la fenêtre de 7 lignes s'étend sur 41 jours au 1er mars. Pour compter en jours quoi qu'il arrive, on écrit range between interval '6 days' preceding and current row.
Envie d'aller plus loin ? Découvrez nos formations certifiées Bac+2 à Bac+5 →