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-дневен безплатен пробен период.