Mysql
 sql >> Database >  >> RDS >> Mysql

Come calcolare la media mobile in MySQL

Molte volte potrebbe essere necessario calcolare la media mobile in MySQL, nota anche come media mobile semplice. Ad esempio, vendite medie negli ultimi 5 giorni . In MySQL non esiste alcuna funzione per calcolare la media mobile. Vediamo quindi come calcolare la media mobile in MySQL utilizzando la query SQL.

Come calcolare la media mobile in MySQL

Ecco i passaggi per calcolare la media mobile in MySQL. Supponiamo che tu abbia la seguente tabella che contiene i dati sulle vendite giornaliere

mysql> create table sales(order_date date,sale int);

mysql> insert into sales values('2020-01-01',20),
('2020-01-02',25),('2020-01-03',15),('2020-01-04',30),
('2020-01-05',20),('2020-01-10',20),('2020-01-06',25),
('2020-01-07',15),('2020-01-08',30),('2020-01-09',20);

mysql> select * from sales;
+------------+------+
| order_date | sale |
+------------+------+
| 2020-01-01 |   20 |
| 2020-01-02 |   25 |
| 2020-01-03 |   15 |
| 2020-01-04 |   30 |
| 2020-01-05 |   20 |
| 2020-01-10 |   20 |
| 2020-01-06 |   25 |
| 2020-01-07 |   15 |
| 2020-01-08 |   30 |
| 2020-01-09 |   20 |
+------------+------+

Bonus Leggi: Come calcolare le vendite medie giornaliere in MySQL

Supponiamo di voler calcolare la media mobile delle vendite degli ultimi 5 giorni. Ecco come puoi farlo usando la query SQL in MySQL.

mysql> SELECT
       a.order_date,
       a.sale,
       Round( ( SELECT SUM(b.sale) / COUNT(b.sale)
                FROM sales AS b
                WHERE DATEDIFF(a.order_date, b.order_date) BETWEEN 0 AND 4
              ), 2 ) AS '5dayMovingAvg'
     FROM sales AS a
     ORDER BY a.order_date;
+------------+------+---------------+
| order_date | sale | 5dayMovingAvg |
+------------+------+---------------+
| 2020-01-01 |   20 |         20.00 |
| 2020-01-02 |   25 |         22.50 |
| 2020-01-03 |   15 |         20.00 |
| 2020-01-04 |   30 |         22.50 |
| 2020-01-05 |   20 |         22.00 |
| 2020-01-06 |   25 |         23.00 |
| 2020-01-07 |   15 |         21.00 |
| 2020-01-08 |   30 |         24.00 |
| 2020-01-09 |   20 |         22.00 |
| 2020-01-10 |   20 |         22.00 |
+------------+------+---------------+

Nella query precedente, eseguiamo un'unione automatica della nostra tabella di vendita con se stessa e, per ogni valore order_date, calcoliamo la media in base ai dati di vendita dei 5 giorni precedenti. Nella nostra query SQL, la query interna esegue il calcolo medio, in base ai dati di vendita raccolti per ciascuna finestra temporale di a.order_date (precedente a 5 giorni) utilizzando la funzione datediff.

Bonus Leggi: Come calcolare la media mobile in Redshift

Se desideri modificare la finestra temporale, cambia la parte in grassetto (TRA 0 e 4) nella query precedente.

Puoi anche aggiungere più filtri aggiornando la clausola WHERE nella query nidificata.

Puoi personalizzare la query sopra per calcolare la media mobile in MySQL, secondo le tue esigenze.

Puoi anche utilizzare uno strumento di creazione di grafici per tracciare la media mobile su un grafico a linee o un dashboard. Ecco un esempio di un grafico a linee creato utilizzando Ubiq.

Se vuoi creare grafici, dashboard e report dal database MySQL, puoi provare Ubiq. Offriamo una prova gratuita di 14 giorni.