sql >> Databáze >  >> RDS >> Mysql

Jak vypočítat klouzavý průměr v MySQL v korelovaném poddotazu?

Pokud je vaše časová osa souvislá (1 hodnota každý den), můžete svůj první pokus zlepšit takto:

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

Pokud má vaše časová osa díry, výsledkem by bylo méně než 5 hodnot pro průměr.




  1. Spotřebovává MySQL výrazně více zdrojů ve srovnání s jinými DBMS?

  2. MySQL Určete nejdelší délku VarChar

  3. Funkce okna Postgres a seskupení podle výjimky

  4. PostgreSQL - klauzule GROUP BY nebo použít v agregační funkci