Много пъти може да се наложи да изчислите текущата обща или кумулативната сума за конкретна колона, като например продажби. Тъй като в MySQL няма функция за изчисляване на кумулативната сума, трябва да я изпълните чрез SQL заявка. Ето SQL заявка за изчисляване на общата сума в MySQL.
Как да изчислим общата сума в MySQL
Ето как да изчислите общата сума в MySQL. Да приемем, че имате следната таблица, която съдържа данни за ежедневните продажби.
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 |
+------------+------+
Да приемем, че искате да изчислите кумулативната сума на продажбите, така,
+------------+------+-----------------+ | 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 | +------------+------+-----------------+
Ето SQL заявката за изчисляване на кумулативната сума в 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 |
+------------+------+-----------------+
Бонус за четене: Как да създадете обобщена таблица в MySQL
В горната заявка зададохме временна променлива csum на 0. След това за всеки ред я използваме за изчисляване и съхраняване на кумулативната сума.
Моля, имайте предвид, че тази кумулативна сума не се съхранява в нито една колона. Просто се показва в резултата.
Ако искате да съхраните тази стойност, трябва да добавите нова колона към вашата таблица и да използвате клаузата UPDATE, както е показано по-долу.
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 |
+------------+------+----------------+
Можете да персонализирате вашата SQL заявка, за да включва филтри, използвайки клауза WHERE или JOINS, както е показано по-долу
mysql> set @csum := 0;
mysql> select order_date,sale, (@csum := @csum + sale) as cumulative_sale
from sales where <condition>
order by order_date;
Бонус четене: Как да изчислим медиана в MySQL
Тъй като MySQL не предлага вградена функция за кумулативна сума, можете да използвате горната SQL заявка, за да изчислите общата сума в MySQL.
След като можете да изчислите кумулативната сума в MySQL, можете да използвате инструмент за диаграми, лесно да ги начертаете като линейна диаграма или лента, както е показано по-долу. Ето пример за диаграма, създадена с Ubiq.

Ако искате да създавате диаграми, табла за управление и отчети от MySQL база данни, можете да опитате Ubiq. Предлагаме 14-дневен безплатен пробен период.