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

Jak obliczyć sumę bieżącą w MySQL

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.

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak uzyskać najnowszy rekord w każdej grupie za pomocą GROUP BY?

  2. Pojedyncze cudzysłowy, podwójne cudzysłowy i znaki wsteczne w MySQL

  3. Dlaczego MySQL zgłasza błąd składni przy FULL OUTER JOIN?

  4. Jak zmienić typ danych dla kolumny w MySQL?

  5. Jak mam poradzić sobie z --secure-file-priv w MySQL?