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

So berechnen Sie die kumulierte Summe in MySQL

Häufig müssen Sie möglicherweise die laufende Summe oder die kumulierte Summe für eine bestimmte Spalte berechnen, z. B. den Umsatz. Da es in MySQL keine Funktion zur Berechnung der kumulativen Gesamtsumme gibt, müssen Sie dies über eine SQL-Abfrage durchführen. Hier ist eine SQL-Abfrage zur Berechnung der kumulativen Gesamtsumme in MySQL.

So berechnen Sie die kumulierte Gesamtsumme in MySQL

So berechnen Sie die kumulative Gesamtsumme in MySQL. Nehmen wir an, Sie haben die folgende Tabelle, die tägliche Verkaufsdaten enthält.

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);

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

Angenommen, Sie möchten die kumulierte Summe der Verkäufe berechnen, wie folgt:

+------------+------+-----------------+
| order_date | sale | cumulative_sale |
+------------+------+-----------------+
| 2020-01-01 |   20 |              20 |
| 2020-01-02 |   25 |              45 |
| 2020-01-03 |   15 |              60 |
| 2020-01-04 |   30 |              90 |
| 2020-01-05 |   20 |             110 |
+------------+------+-----------------+

Hier ist die SQL-Abfrage zur Berechnung der kumulativen Summe in MySQL.

mysql> set @csum := 0;
mysql> select order_date,sale, (@csum := @csum + sale) as cumulative_sale
       from sales
       order by order_date;
+------------+------+-----------------+
| order_date | sale | cumulative_sale |
+------------+------+-----------------+
| 2020-01-01 |   20 |              20 |
| 2020-01-02 |   25 |              45 |
| 2020-01-03 |   15 |              60 |
| 2020-01-04 |   30 |              90 |
| 2020-01-05 |   20 |             110 |
+------------+------+-----------------+

Bonuslektüre: So erstellen Sie eine Pivot-Tabelle in MySQL

In der obigen Abfrage setzen wir eine temporäre Variable csum auf 0. Dann verwenden wir sie für jede Zeile, um die kumulative Summe zu berechnen und zu speichern.

Bitte beachten Sie, dass diese kumulierte Summe in keiner Spalte gespeichert wird. Es wird einfach im Ergebnis angezeigt.

Wenn Sie diesen Wert speichern möchten, müssen Sie Ihrer Tabelle eine neue Spalte hinzufügen und die UPDATE-Klausel wie unten gezeigt verwenden.

mysql> alter table sales add column cumulative_sum int;

mysql> set @csum := 0;

mysql> update sales
       set cumulative_sum = (@csum := @csum + sale)
       order by order_date;

mysql> select order_date,sale,cumulative_sum from sales;
+------------+------+----------------+
| order_date | sale | cumulative_sum |
+------------+------+----------------+
| 2020-01-01 |   20 |             20 |
| 2020-01-02 |   25 |             45 |
| 2020-01-03 |   15 |             60 |
| 2020-01-04 |   30 |             90 |
| 2020-01-05 |   20 |            110 |
+------------+------+----------------+

Sie können Ihre SQL-Abfrage so anpassen, dass sie Filter mit der WHERE-Klausel oder JOINS enthält, wie unten gezeigt

mysql> set @csum := 0;
mysql> select order_date,sale, (@csum := @csum + sale) as cumulative_sale
       from sales where <condition>
       order by order_date;

Bonuslektüre: So berechnen Sie den Median in MySQL

Da MySQL keine integrierte Funktion für die kumulative Summe bietet, können Sie die obige SQL-Abfrage verwenden, um die kumulative Summe in MySQL zu berechnen.

Nachdem Sie die kumulierte Summe in MySQL berechnen können, können Sie sie mit einem Diagrammtool einfach als Liniendiagramm oder Balkendiagramm darstellen, wie unten gezeigt. Hier ist ein Beispiel für ein Diagramm, 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.