sql >> Database >  >> RDS >> Mysql

Het voortschrijdend gemiddelde berekenen in MySQL

Vaak moet u het voortschrijdend gemiddelde berekenen in MySQL, ook wel bekend als Simple Moving Average. Bijvoorbeeld gemiddelde verkoop de afgelopen 5 dagen . In MySQL is er geen functie om voortschrijdend gemiddelde te berekenen. Laten we dus eens kijken hoe we het voortschrijdend gemiddelde in MySQL kunnen berekenen met behulp van een SQL-query.

Hoe het voortschrijdend gemiddelde te berekenen in MySQL

Hier zijn de stappen om het voortschrijdend gemiddelde in MySQL te berekenen. Stel dat u de volgende tabel heeft die dagelijkse verkoopgegevens bevat

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 lezen: Hoe de gemiddelde verkoop per dag in MySQL te berekenen

Stel dat u de voortschrijdende gemiddelde verkoop van de afgelopen 5 dagen wilt berekenen. Hier leest u hoe u dit kunt doen met behulp van SQL-query's 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 |
+------------+------+---------------+

In de bovenstaande query doen we een self-join van onze verkooptabel met zichzelf, en voor elke order_date-waarde berekenen we het gemiddelde op basis van verkoopgegevens voor de voorgaande 5 dagen. In onze SQL-query voert de innerlijke query de gemiddelde berekening uit, gebaseerd op de verkoopgegevens die zijn verzameld voor het tijdvenster van elke a.order_date (voorafgaand aan 5 dagen) met behulp van de datediff-functie.

Bonus lezen: Hoe het voortschrijdend gemiddelde in roodverschuiving te berekenen

Als je je tijdvenster wilt wijzigen, verander dan gewoon het gedeelte in vet (TUSSEN 0 en 4) in bovenstaande zoekopdracht.

U kunt ook meer filters toevoegen door de WHERE-component in de geneste query bij te werken.

U kunt de bovenstaande query aanpassen om het voortschrijdend gemiddelde in MySQL te berekenen, volgens uw vereisten.

U kunt ook een grafiektool gebruiken om voortschrijdend gemiddelde in een lijndiagram of dashboard te plotten. Hier is een voorbeeld van een lijndiagram gemaakt met Ubiq.

Als u grafieken, dashboards en rapporten wilt maken vanuit de MySQL-database, kunt u Ubiq proberen. We bieden een gratis proefperiode van 14 dagen aan.

  1. ASP.NET gebruik SqlConnection connect MySQL

  2. MySQL cast/converteert automatisch een string naar een nummer?

  3. Splits varchar in afzonderlijke kolommen in Oracle

  4. SQL Server DATEPART() vs DATENAME() - Wat is het verschil?