Много пъти може да се наложи да изчислите текущата обща или кумулативната сума за конкретна колона, като например продажби. Тъй като в 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-дневен безплатен пробен период.