MySQL nemá funkci pro výpočet kumulativního součtu, známého také jako průběžný součet. Chcete-li vypočítat kumulativní součet v MySQL, musíte napsat dotaz SQL. Podívejme se tedy na dotaz SQL pro výpočet průběžného součtu v MySQL.
Jak vypočítat celkový součet v MySQL
Zde je návod, jak vypočítat celkový součet v MySQL. Řekněme, že máte následující tabulku, která obsahuje denní tržby.
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 | +------------+------+
Řekněme, že chcete vypočítat průběžný součet pro tuto tabulku, podobně.
+------------+------+-----------------+ | 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 | +------------+------+-----------------+
Bonusové čtení: Jak zřetězit více řádků do jednoho pole v MySQL
Zde je dotaz SQL pro výpočet průběžného součtu v 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 | +------------+------+-----------------+
Ve výše uvedeném dotazu jsme nejprve nastavili uživatelem definovanou proměnnou csum na 0. Tu používáme k uložení průběžného součtu každého řádku. Je důležité si uvědomit, že csum není uložen v žádné tabulce. Jednoduše se používá k zobrazení průběžných celkových hodnot.
Chcete-li uložit tento průběžný součet, můžete do tabulky přidat nový sloupec a pomocí klauzule UPDATE uložit průběžné celkové hodnoty.
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 | +------------+------+----------------+
Bonusové čtení: Jak přidat celkový řádek v MySQL
Dotaz SQL můžete také přizpůsobit pomocí klauzule WHERE nebo JOINS, jak je uvedeno
mysql> set @csum := 0; mysql> select order_date,sale, (@csum := @csum + sale) as cumulative_sale from sales where <condition> order by order_date;
Vzhledem k tomu, že MySQL nenabízí žádnou vestavěnou funkci pro spuštění součtu, můžete použít výše uvedený dotaz SQL ke spuštění součtu v MySQL. Můžete také použít MONTH(datum_objednávky) namísto datum_objednávky výše, pokud chcete psát SQL pro kumulativní součet za měsíc.
Jakmile vypočítáte průběžný součet, můžete pomocí nástroje pro vytváření grafů vykreslit tato data do spojnicového grafu a sdílet je se svým týmem. Zde je příklad spojnicového grafu, který ukazuje průběžný součet, vytvořený pomocí Ubiq.
Pokud chcete vytvářet grafy, dashboardy a sestavy z databáze MySQL, můžete zkusit Ubiq. Nabízíme 14denní bezplatnou zkušební verzi.