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

So berechnen Sie die laufende Summe in MySQL

MySQL hat keine Funktion zur Berechnung der kumulativen Summe, auch bekannt als laufende Summe. Sie müssen eine SQL-Abfrage schreiben, um die kumulative Summe in MySQL zu berechnen. Schauen wir uns also eine SQL-Abfrage an, um die laufende Summe in MySQL zu berechnen.

So berechnen Sie die laufende Summe in MySQL

So berechnen Sie die laufende Summe in MySQL. Nehmen wir an, Sie haben die folgende Tabelle, die die täglichen Verkäufe 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 laufende Summe für diese Tabelle berechnen.

+------------+------+-----------------+
| 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: Wie man in MySQL mehrere Zeilen zu einem Feld verkettet

Hier ist die SQL-Abfrage zur Berechnung der laufenden 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 |
+------------+------+-----------------+

In der obigen Abfrage setzen wir zuerst eine benutzerdefinierte Variable csum auf 0. Dann verwenden wir sie, um die laufende Summe jeder Zeile zu speichern. Es ist wichtig zu beachten, dass csum in keiner Tabelle gespeichert wird. Es dient lediglich zur Anzeige der laufenden Gesamtwerte.

Wenn Sie diese laufende Summe speichern möchten, können Sie Ihrer Tabelle eine neue Spalte hinzufügen und die UPDATE-Klausel verwenden, um die laufenden Summenwerte zu speichern.

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

Bonuslektüre: Wie man Gesamtzeilen in MySQL hinzufügt

Sie können Ihre SQL-Abfrage auch mithilfe der WHERE-Klausel oder JOINS anpassen, wie gezeigt,

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


Da MySQL keine eingebaute Funktion zum Laufenlassen von Summen bietet, können Sie die obige SQL-Abfrage zum Laufenlassen von Summen in MySQL verwenden. Sie können auch MONTH(order_date) verwenden anstelle von order_date oben, wenn Sie SQL für die kumulative Summe nach Monat schreiben möchten.

Sobald Sie die laufende Summe berechnet haben, können Sie diese Daten mit einem Diagrammtool in einem Liniendiagramm darstellen und mit Ihrem Team teilen. Hier ist ein Beispiel für ein Liniendiagramm, das die laufende Summe anzeigt und 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.