Mysql
 sql >> Datenbank >  >> RDS >> Mysql

So berechnen Sie den gleitenden Durchschnitt in MySQL

Oft müssen Sie möglicherweise den gleitenden Durchschnitt in MySQL berechnen, der auch als einfacher gleitender Durchschnitt bekannt ist. Z. B. durchschnittlicher Umsatz für die letzten 5 Tage . In MySQL gibt es keine Funktion zur Berechnung des gleitenden Durchschnitts. Sehen wir uns also an, wie man den gleitenden Durchschnitt in MySQL mithilfe einer SQL-Abfrage berechnet.

Wie man den gleitenden Durchschnitt in MySQL berechnet

Hier sind die Schritte zur Berechnung des gleitenden Durchschnitts in MySQL. Angenommen, Sie haben die folgende Tabelle mit täglichen Verkaufsdaten

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

Bonuslektüre: So berechnen Sie den durchschnittlichen Umsatz pro Tag in MySQL

Angenommen, Sie möchten den gleitenden Durchschnittsumsatz der letzten 5 Tage berechnen. So können Sie dies mit einer SQL-Abfrage in MySQL tun.

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 der obigen Abfrage führen wir einen Self-Join unserer Verkaufstabelle mit sich selbst durch und berechnen für jeden order_date-Wert den Durchschnitt basierend auf den Verkaufsdaten der vorangegangenen 5 Tage. In unserer SQL-Abfrage führt die innere Abfrage die Durchschnittsberechnung basierend auf den Verkaufsdaten durch, die für jedes Zeitfenster von a.order_date (vor 5 Tagen) mit der Funktion datediff gesammelt wurden.

Bonuslektüre: So berechnen Sie den gleitenden Durchschnitt in Redshift

Wenn Sie Ihr Zeitfenster ändern möchten, ändern Sie einfach den fetten Teil (ZWISCHEN 0 und 4) in obiger Abfrage.

Sie können auch weitere Filter hinzufügen, indem Sie die WHERE-Klausel in der verschachtelten Abfrage aktualisieren.

Sie können die obige Abfrage anpassen, um den gleitenden Durchschnitt in MySQL gemäß Ihren Anforderungen zu berechnen.

Sie können auch ein Diagrammtool verwenden, um den gleitenden Durchschnitt in einem Liniendiagramm oder Dashboard darzustellen. Hier ist ein Beispiel für ein Liniendiagramm, das mit Ubiq erstellt wurde.

Wenn Sie Diagramme, Dashboards und Berichte aus einer MySQL-Datenbank erstellen möchten, können Sie Ubiq ausprobieren. Wir bieten eine 14-tägige kostenlose Testversion an.