sql >> Databáze >  >> RDS >> Database

Jak vypočítat průběžný celkový počet v Redshift

Kumulativní součet, také známý jako průběžný součet, je užitečná metrika KPI pro sledování součtových hodnot v průběhu času. Pokud jsou vaše data uložena v Amazon Redshift, pak je docela snadné vypočítat kumulativní součet v Redshift. Podívejme se, jak vypočítat průběžný součet v Redshift.

Jak vypočítat průběžný součet v Redshift

Zde jsou kroky k výpočtu průběžného součtu v Redshift. Řekněme, že máte následující tabulku, která obsahuje denní tržby

postgres-#> create table sales(order_date date,sale int);

postgres-#> insert into sales values('2020-03-01',30),
('2020-03-02',35),('2020-03-03',25),('2020-03-04',40),('2020-03-05',30);

postgres-#> select * from sales;
+------------+------+
| order_date | sale |
+------------+------+
| 2020-03-01 |   30 |
| 2020-03-02 |   35 |
| 2020-03-03 |   25 |
| 2020-03-04 |   40 |
| 2020-03-05 |   30 |
+------------+------+

Řekněme, že chcete vypočítat kumulativní součet prodejů, jako je to,

+------------+------+-----------------+
| order_date | sale | cumulative_sale |
+------------+------+-----------------+
| 2020-03-01 |   30 |              30 |
| 2020-03-02 |   35 |              65 |
| 2020-03-03 |   25 |              90 |
| 2020-03-04 |   40 |             130 |
| 2020-03-05 |   30 |             160 |
+------------+------+-----------------+

Zde je dotaz SQL pro výpočet průběžného součtu v Redshift. Protože Redshift je v podstatě PostgreSQL, všechny jeho funkce a výrazy jsou dostupné v PostgreSQL. Použijeme k tomu funkci Window, dostupnou v PostgreSQL.

postgres=# SELECT order_date
          , sum(sale) over (order by order_date asc rows between unbounded preceding and current row)
          FROM   sales
          ORDER  BY order_date;

 order_date | sum
------------+-----
 2020-03-01 |  30
 2020-03-02 |  65
 2020-03-03 |  90
 2020-03-04 | 130
 2020-03-05 | 160

Podívejme se na výše uvedený dotaz podrobně. Výše uvedená funkce SUM vypočítá kumulativní součet pro každý řádek. Používáme však funkci okna OVER, která nám pomáhá definovat počet řádků, které mají být použity pro výpočet průběžného součtu v Redshift.

Bonusové čtení:Jak vypočítat klouzavý průměr v Redshift

Nejprve seřadíme data chronologicky podle datum_objednávky abychom zajistili, že sečteme správné řádky pro každý kumulativní součet. Dále pro každý řádek řekneme Redshiftu, aby sečetl prodej sloupec pro všechny předchozí řádky. Děláme to pomocí funkce okna OVER a zmiňujeme řádky mezi neomezeným předchozím a aktuálním řádkem . To znamená, že pro každý řádek vezměte v úvahu pouze předchozí řádky pro kumulativní součet.

Jak se rám okna mění pro každý řádek, k výpočtu průběžného součtu budou použity pouze předchozí řádky.

Pokud chcete filtrovat svá data předtím, než spočítáte průběžný součet v Redshift, můžete tak učinit přidáním klauzule WHERE, jak je uvedeno níže.

postgres=# SELECT order_date
          , sum(sale) over (order by order_date asc rows between unbounded preceding and current row)
          FROM   sales
          ORDER  BY order_date
          WHERE <condition>;

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

Protože Redshift je v podstatě PostgreSQL, můžete také použít výše uvedený dotaz k výpočtu průběžného součtu v PostgreSQL.

Po výpočtu kumulativního součtu v Redshift můžete použít nástroj pro vizualizaci dat Redshift k vykreslení do spojnicového grafu. Zde je příklad spojnicového grafu pro kumulativní součet vytvořeného pomocí Ubiq.

Pokud chcete vytvářet grafy a dashboardy z databáze Redshift, můžete zkusit Ubiq. Nabízíme 14denní bezplatnou zkušební verzi.

  1. mysql trigger uložený trigger je již používán příkazem, který vyvolal uložený trigger

  2. Před vytvořením tabulky v Oracle zkontrolujte, zda existuje nebo neexistuje

  3. Jak zjistit, kdy byla v Oracle vytvořena konkrétní tabulka?

  4. Jak přidat uživatelskou skupinu Active Directory jako přihlášení na SQL Server