Database
 sql >> Datenbank >  >> RDS >> Database

So berechnen Sie die laufende Summe in Redshift

Die kumulative Summe, auch als laufende Summe bekannt, ist eine nützliche KPI-Metrik, um Gesamtsummenwerte im Laufe der Zeit zu überwachen. Wenn Ihre Daten in Amazon Redshift gespeichert sind, ist es ganz einfach, die kumulierte Summe in Redshift zu berechnen. Sehen wir uns an, wie die laufende Summe in Redshift berechnet wird.

So berechnen Sie die laufende Summe in Redshift

Hier sind die Schritte zur Berechnung der laufenden Summe in Redshift. Nehmen wir an, Sie haben die folgende Tabelle, die die täglichen Verkäufe enthält

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

Angenommen, Sie möchten die kumulierte Summe der Verkäufe berechnen, wie folgt:

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

Hier ist die SQL-Abfrage zur Berechnung der laufenden Summe in Redshift. Da Redshift im Grunde PostgreSQL ist, sind alle seine Funktionen und Ausdrücke in PostgreSQL verfügbar. Dazu verwenden wir eine in PostgreSQL verfügbare Fensterfunktion.

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

Schauen wir uns die obige Abfrage im Detail an. Die obige SUM-Funktion berechnet die kumulative Summe für jede Zeile. Wir verwenden jedoch eine Fensterfunktion OVER, die uns hilft, die Anzahl der Zeilen zu definieren, die für die Berechnung der laufenden Summe in Redshift verwendet werden sollen.

Bonuslektüre:So berechnen Sie den gleitenden Durchschnitt in Redshift

Zuerst ordnen wir unsere Daten chronologisch nach order_date um sicherzustellen, dass wir für jede kumulative Summe die richtigen Zeilen addieren. Als Nächstes weisen wir Redshift für jede Zeile an, Verkauf zu summieren Spalte für alle vorhergehenden Zeilen. Wir tun dies mit der Fensterfunktion OVER und erwähnen Zeilen zwischen unbegrenzter vorangehender und aktueller Zeile . Das heißt, für jede Zeile werden nur die vorhergehenden Zeilen für die kumulative Summe berücksichtigt.

Da sich der Fensterrahmen für jede Zeile ändert, werden nur die vorhergehenden Zeilen zur Berechnung der laufenden Summe verwendet.

Wenn Sie Ihre Daten filtern möchten, bevor Sie die laufende Summe in Redshift berechnen, können Sie dies tun, indem Sie eine WHERE-Klausel hinzufügen, wie unten gezeigt.

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

Bonuslektüre: So erstellen Sie eine Pivot-Tabelle in PostgreSQL

Da Redshift im Wesentlichen PostgreSQL ist, können Sie auch die obige Abfrage verwenden, um die laufende Summe in PostgreSQL zu berechnen.

Nachdem Sie die kumulative Summe in Redshift berechnet haben, können Sie sie mit einem Redshift-Datenvisualisierungstool in einem Liniendiagramm darstellen. Hier ist ein Beispiel für ein Liniendiagramm für die kumulative Gesamtsumme, das mit Ubiq erstellt wurde.

Wenn Sie Diagramme und Dashboards aus der Redshift-Datenbank erstellen möchten, können Sie Ubiq ausprobieren. Wir bieten eine 14-tägige kostenlose Testversion an.