sql >> Databáze >  >> RDS >> Mysql

Jak vypočítat kumulativní součet v MySQL

Mnohokrát možná budete muset vypočítat průběžný součet nebo kumulativní součet pro konkrétní sloupec, jako je například prodej. Protože v MySQL neexistuje žádná funkce pro výpočet kumulativního součtu, musíte to provést pomocí SQL dotazu. Zde je dotaz SQL pro výpočet kumulativního součtu v MySQL.

Jak vypočítat kumulativní součet v MySQL

Zde je návod, jak vypočítat kumulativní součet v MySQL. Řekněme, že máte následující tabulku, která obsahuje denní údaje o prodeji.

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 kumulativní součet prodejů, 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 |
+------------+------+-----------------+

Zde je dotaz SQL pro výpočet kumulativní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 |
+------------+------+-----------------+

Bonusové čtení: Jak vytvořit kontingenční tabulku v MySQL

Ve výše uvedeném dotazu jsme nastavili dočasnou proměnnou csum na 0. Poté ji pro každý řádek použijeme k výpočtu a uložení kumulativního součtu.

Upozorňujeme, že tento kumulativní součet není uložen v žádném sloupci. Jednoduše se zobrazí ve výsledku.

Pokud chcete tuto hodnotu uložit, musíte do tabulky přidat nový sloupec a použít klauzuli UPDATE, jak je uvedeno níže.

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 |
+------------+------+----------------+

Dotaz SQL můžete přizpůsobit tak, aby zahrnoval filtry pomocí klauzule WHERE nebo JOINS, jak je uvedeno níže

mysql> set @csum := 0;
mysql> select order_date,sale, (@csum := @csum + sale) as cumulative_sale
       from sales where <condition>
       order by order_date;

Bonusové čtení: Jak vypočítat medián v MySQL

Protože MySQL nenabízí vestavěnou funkci pro kumulativní součet, můžete použít výše uvedený SQL dotaz k výpočtu kumulativního součtu v MySQL.

Poté, co můžete vypočítat kumulativní součet v MySQL, můžete použít nástroj pro vytváření grafů a snadno je vykreslit jako spojnicový graf nebo sloupcový graf, jak je znázorněno níže. Zde je příklad grafu vytvořeného 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.

  1. Příklady EXTRACT() – MySQL

  2. Vytvoření časovače v Oracle Forms / Forms 6i a zobrazení hodin

  3. Funkce SUM() v MySQL

  4. Primární klíč pro zpracování Android Realm v relačním objektu