MySQL nie posiada funkcji obliczania sumy łącznej, znanej również jako suma bieżąca. Musisz napisać zapytanie SQL, aby obliczyć skumulowaną sumę w MySQL. Spójrzmy więc na zapytanie SQL, aby obliczyć bieżącą sumę w MySQL.
Jak obliczyć sumę bieżącą w MySQL
Oto jak obliczyć bieżącą sumę w MySQL. Załóżmy, że masz poniższą tabelę zawierającą dzienną sprzedaż.
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ć sumę bieżącą dla tej tabeli, 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 | +------------+------+-----------------+
Przeczytaj dodatkowe: Jak połączyć wiele wierszy w jedno pole w MySQL
Oto zapytanie SQL do obliczenia sumy bieżącej 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 |
+------------+------+-----------------+
W powyższym zapytaniu najpierw ustawiamy zmienną csum zdefiniowaną przez użytkownika na 0. Używamy jej do przechowywania sumy bieżącej każdego wiersza. Należy zauważyć, że csum nie jest przechowywane w żadnej tabeli. Służy po prostu do wyświetlania bieżących wartości całkowitych.
Jeśli chcesz przechowywać tę sumę bieżącą, możesz dodać nową kolumnę do swojej tabeli i użyć klauzuli UPDATE do przechowywania wartości sum bieżących.
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 |
+------------+------+----------------+
Przeczytaj bonus: Jak dodać sumę wierszy w MySQL
Możesz także dostosować zapytanie SQL za pomocą klauzuli WHERE lub JOINS, jak pokazano,
mysql> set @csum := 0;
mysql> select order_date,sale, (@csum := @csum + sale) as cumulative_sale
from sales where <condition>
order by order_date;
Ponieważ MySQL nie oferuje żadnej wbudowanej funkcji do obliczania sumy, możesz użyć powyższego zapytania SQL do uruchomienia sumy w MySQL. Możesz też użyć MONTH(data_zamówienia) zamiast data_zamówienia powyżej, jeśli chcesz napisać SQL dla łącznej sumy według miesiąca.
Po obliczeniu sumy bieżącej możesz użyć narzędzia do tworzenia wykresów, aby wykreślić te dane na wykresie liniowym i udostępnić je zespołowi. Oto przykład wykresu liniowego, który pokazuje sumę bieżącą, 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.