Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak obliczyć skumulowaną sumę w MySQL

Często może być konieczne obliczenie sumy bieżącej lub sumy skumulowanej dla określonej kolumny, takiej jak sprzedaż. Ponieważ w MySQL nie ma funkcji obliczania skumulowanej sumy, musisz to zrobić za pomocą zapytania SQL. Oto zapytanie SQL do obliczenia łącznej sumy w MySQL.

Jak obliczyć skumulowaną sumę w MySQL

Oto jak obliczyć skumulowaną sumę w MySQL. Załóżmy, że masz poniższą tabelę zawierającą dzienne dane o sprzedaży.

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

Załóżmy, że chcesz obliczyć skumulowaną sumę sprzedaży, w ten sposób

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

Oto zapytanie SQL do obliczenia łącznej sumy w 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 |
+------------+------+-----------------+

Przeczytaj bonus: Jak utworzyć tabelę przestawną w MySQL

W powyższym zapytaniu ustawiamy tymczasową zmienną csum na 0. Następnie dla każdego wiersza używamy jej do obliczenia i przechowywania sumy skumulowanej.

Należy pamiętać, że ta skumulowana suma nie jest przechowywana w żadnej kolumnie. Jest po prostu wyświetlany w wyniku.

Jeśli chcesz zachować tę wartość, musisz dodać nową kolumnę do swojej tabeli i użyć klauzuli UPDATE, jak pokazano poniżej.

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

Możesz dostosować zapytanie SQL, aby zawierało filtry za pomocą klauzuli WHERE lub JOINS, jak pokazano poniżej

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

Przeczytaj dodatkowe: Jak obliczyć medianę w MySQL

Ponieważ MySQL nie oferuje wbudowanej funkcji sumy skumulowanej, możesz użyć powyższego zapytania SQL, aby obliczyć łączną sumę w MySQL.

Po obliczeniu skumulowanej sumy w MySQL, możesz użyć narzędzia do tworzenia wykresów, aby łatwo wykreślić je jako wykres liniowy lub wykres słupkowy, jak pokazano poniżej. Oto przykład wykresu utworzonego za pomocą Ubiq.

Jeśli chcesz tworzyć wykresy, dashboardy i raporty z bazy danych MySQL, możesz wypróbować Ubiq. Oferujemy 14-dniowy bezpłatny okres próbny.

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. C# z parametrami INSERT MySQL

  2. Mysql:Zamów według polubienia?

  3. Jak zapobiec duplikowaniu nazw użytkowników, gdy ludzie się rejestrują?

  4. Niezsynchronizowane polecenia; nie możesz teraz uruchomić tego polecenia

  5. Jak mogę napisać SQL dla tabeli, która ma taką samą nazwę jak chronione słowo kluczowe w MySql?