Moyenne glissante

Fermé
Fredo_ - 21 juil. 2017 à 13:45
yg_be Messages postés 23349 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 novembre 2024 - 21 juil. 2017 à 21:45
Bonjour,

Je souhaite faire la moyenne glissante d'une colonne QT sur les 3 dernières dates inf ou égal DateDiff
La table contient 3 colonnes :
Code DateDiff QT
15 02.01.2014 25
15 03.01.2014 135
15 04.01.2014 35
15 07.01.2014 19
15 09.01.2014 39
15 10.01.2014 50
15 13.01.2014 40
15 14.01.2014 54

SELECT AVG(QT) as moy, from
(SELECT QT
FROM DIFF a
WHERE Code = '15'
and DATEDIFF <= '01/10/2014'
order by Datediff desc
ROWS 1 to 3)

Ce code fonctionne, si je donne en paramètre la date (valable en procédure stockée).
Je souhaiterai l'obtenir pour chaque date de ma table par requête.

Code DateDiff QT Moy
15 02.01.2014 25 25 = AVG(25,0,0)
15 03.01.2014 135 80 = AVG(135,25,0)
15 04.01.2014 35 65 = AVG(35,135,25)
15 07.01.2014 19 63 = AVG(19,35,135)
15 09.01.2014 39 31 = AVG(39,19,35)
15 10.01.2014 50 36 = AVG(50,39,19)
15 13.01.2014 40 43 = AVG(40,50,39)
15 14.01.2014 54 48 = AVG(54,40,50)


2 réponses

J'ai essayer avec une jointure, mais je ne peux plus faire la limitation à 3

SELECT C1.Datediff as C1D , C3.DATEDIFF, C3.QT
FROM DIFF C1
JOIN (
SELECT a.code, a.DATEDIFF, a.QT
FROM DIFF a
WHERE a.Code = '15'
order by a.Datediff desc
) C3
ON C3.Datediff <= C1.Datediff and C1.code = C3.Code
ORDER By C1.Datediff, C3.DateDiff desc;

Merci pour votre aide
0
yg_be Messages postés 23349 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 novembre 2024 Ambassadeur 1 554
21 juil. 2017 à 21:45
bonsoir, ceci va peut-être t’inspirer:
http://www.sqlines.com/mysql/how-to/get_top_n_each_group
0