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

Sådan beregnes glidende gennemsnit i MySQL

Mange gange skal du muligvis beregne glidende gennemsnit i MySQL, også kendt som Simple Moving Average. F.eks. gennemsnitligt salg i de seneste 5 dage . I MySQL er der ingen funktion til at beregne glidende gennemsnit. Så lad os se, hvordan man beregner glidende gennemsnit i MySQL ved hjælp af SQL-forespørgsel.

Sådan beregnes glidende gennemsnit i MySQL

Her er trinene til at beregne glidende gennemsnit i MySQL. Lad os sige, at du har følgende tabel, der indeholder daglige salgsdata

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 |
+------------+------+

Bonuslæser: Sådan beregner du det gennemsnitlige salg pr. dag i MySQL

Lad os sige, at du vil beregne det glidende gennemsnitlige salg for de seneste 5 dage. Sådan kan du gøre det ved hjælp af SQL-forespørgsel i 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 |
+------------+------+---------------+

I ovenstående forespørgsel foretager vi en selv-join af vores salgstabel med sig selv, og for hver ordre_dato-værdi beregner vi gennemsnittet baseret på salgsdata for de foregående 5 dage. I vores SQL-forespørgsel udfører den indre forespørgsel gennemsnitsberegningen, baseret på salgsdataene indsamlet for hver a.order_dates tidsvindue (forudgående 5 dage) ved hjælp af datediff-funktionen.

Bonuslæser: Sådan beregner du glidende gennemsnit i rødforskydning

Hvis du vil ændre dit tidsvindue, skal du blot ændre delen med fed skrift (MELLEM 0 og 4) i ovenstående forespørgsel.

Du kan også tilføje flere filtre ved at opdatere WHERE-sætningen i den indlejrede forespørgsel.

Du kan tilpasse ovenstående forespørgsel til at beregne glidende gennemsnit i MySQL i henhold til dine krav.

Du kan også bruge et diagramværktøj til at plotte glidende gennemsnit på et linjediagram eller dashboard. Her er et eksempel på et linjediagram oprettet ved hjælp af Ubiq.

Hvis du vil oprette diagrammer, dashboards og rapporter fra MySQL-databasen, kan du prøve Ubiq. Vi tilbyder en 14-dages gratis prøveperiode.

  1. Maksimal længde for tekst af MySQL-typen

  2. 10 effektive måder at være mere produktiv på på arbejdspladsen

  3. T-SQL betinget bestilling af

  4. Sådan indlæses og administreres data i Microsoft Power BI