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

Sådan beregnes kumulativ total i MySQL

Mange gange skal du muligvis beregne løbende total eller kumulativ total for en bestemt kolonne, såsom salg. Da der ikke er nogen funktion til at beregne kumulativ total i MySQL, skal du udføre det via SQL-forespørgsel. Her er en SQL-forespørgsel til at beregne kumulativ total i MySQL.

Sådan beregnes kumulativ total i MySQL

Sådan beregner du kumulativ total 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);

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

Lad os sige, at du vil beregne den kumulative sum af salg, som sådan,

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

Her er SQL-forespørgslen til at beregne kumulativ sum i 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 |
+------------+------+-----------------+

Bonus læst: Sådan opretter du pivottabel i MySQL

I ovenstående forespørgsel sætter vi en midlertidig variabel csum til 0. Derefter bruger vi den for hver række til at beregne og gemme den kumulative sum.

Bemærk venligst, at denne kumulative sum ikke er gemt i nogen kolonne. Det vises simpelthen som resultat.

Hvis du vil gemme denne værdi, skal du tilføje en ny kolonne til din tabel og bruge UPDATE-klausulen som vist nedenfor.

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

Du kan tilpasse din SQL-forespørgsel til at inkludere filtre ved hjælp af WHERE-sætning eller JOINS, som vist nedenfor

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

Bonuslæsning: Sådan beregnes median i MySQL

Da MySQL ikke tilbyder indbygget funktion til kumulativ sum, kan du bruge ovenstående SQL-forespørgsel til at beregne kumulativ total i MySQL.

Når du kan beregne kumulativ total i MySQL, kan du bruge et diagramværktøj nemt plotte dem som et linjediagram eller et søjlediagram, som vist nedenfor. Her er et eksempel på et diagram 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. Sådan konverteres en streng til store bogstaver i SQL

  2. 2 funktioner, der returnerer måneden fra en dato i Oracle

  3. En introduktion til Concurrent Collection API'er i Java

  4. Sådan opretter du en offline internationaliseringsapp:Byg projektstrukturen