sql >> Database >  >> RDS >> Mysql

Hoe bereken je een voortschrijdend gemiddelde in MySQL in een gecorreleerde subquery?

Als uw tijdlijn continu is (1 waarde per dag), kunt u uw eerste poging als volgt verbeteren:

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

Als uw tijdlijn gaten bevat, zou dit resulteren in minder dan 5 waarden voor het gemiddelde.




  1. Query voor het tellen van verschillende waarden in een voortschrijdend datumbereik

  2. Proberen om INSERT te krijgen om alleen nieuwe gegevens in te voegen

  3. Waarom ongeldige conversie aangevraagd FOUTCODE:17132?

  4. Sessievariabelen:hoeveel data is te veel?