Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie berechnet man einen gleitenden Durchschnitt in MySQL in einer korrelierten Unterabfrage?

Wenn Ihre Zeitleiste kontinuierlich ist (1 Wert pro Tag), könnten Sie Ihren ersten Versuch wie folgt verbessern:

SELECT c.date,
       ( SELECT AVERAGE(m.value) 
         FROM   measures as m
         WHERE  m.measured_on_dt 
                    BETWEEN DATE_SUB(c.date, INTERVAL 5 day) AND c.date
       ) as `average_to_date`
FROM    calendar c
WHERE   c.date between date1 AND date2  -- graph boundaries
ORDER BY c.date ASC

Wenn Ihre Zeitachse Löcher aufweist, würde dies zu weniger als 5 Werten für den Durchschnitt führen.