MySQL няма функция за изчисляване на кумулативна сума, известна още като текуща сума. Трябва да напишете SQL заявка, за да изчислите кумулативната сума в MySQL. Така че нека разгледаме 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 | +------------+------+-----------------+
Бонус за четене: Как да свържете множество редове в едно поле в MySQL
Ето 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 |
+------------+------+-----------------+
В горната заявка първо зададохме дефинирана от потребителя променлива csum на 0. Използваме я за съхраняване на текущата сума на всеки ред. Важно е да се отбележи, че csum не се съхранява в никоя таблица. Използва се просто за показване на текущите общи стойности.
Ако искате да съхраните тази текуща обща сума, можете да добавите нова колона към вашата таблица и да използвате клаузата 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 |
+------------+------+----------------+
Бонус четене: Как да добавите общ ред в MySQL
Можете също да персонализирате вашата 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 не предлага никаква вградена функция за изпълнение на общата сума, можете да използвате горната SQL заявка за изпълнение на общата сума в MySQL. Можете също да използвате MONTH(дата_на_поръчка) вместо дата_на_поръчка по-горе, ако искате да напишете SQL за кумулативна сума по месеци.
След като изчислите общия обем, можете да използвате инструмент за диаграми, за да начертаете тези данни в линейна диаграма и да ги споделите с вашия екип. Ето пример за линейна диаграма, която показва текущата сума, създадена с Ubiq.

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