sql >> Database teknologi >  >> RDS >> Database

Sådan beregnes løbende total i rødforskydning

Kumulativ total, også kendt som løbende total, er en nyttig KPI-metrik til at overvåge samlede sumværdier over tid. Hvis dine data er gemt i Amazon Redshift, så er det ret nemt at beregne kumulativ sum i Redshift. Lad os se, hvordan man beregner løbende total i Redshift.

Sådan beregnes løbende total i rødforskydning

Her er trinene til at beregne løbende total i Redshift. Lad os sige, at du har følgende tabel, der indeholder daglige salg

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

Lad os sige, at du vil beregne den kumulative sum af salg, som sådan,

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

Her er SQL-forespørgslen til at beregne løbende total i Redshift. Da Redshift grundlæggende er PostgreSQL, er alle dets funktioner og udtryk tilgængelige i PostgreSQL. Så vi vil bruge en vinduesfunktion, tilgængelig i PostgreSQL, til at gøre det.

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

Lad os se på ovenstående forespørgsel i detaljer. SUM-funktionen ovenfor beregner den kumulative sum for hver række. Vi bruger dog en vinduesfunktion OVER, som hjælper os med at definere antallet af rækker, der skal bruges til at beregne løbende total i rødforskydning.

Bonuslæsning:Sådan beregnes glidende gennemsnit i rødforskydning

Først bestiller vi vores data kronologisk efter order_date for at sikre, at vi lægger de rigtige rækker sammen for hver kumulativ sum. Dernæst for hver række fortæller vi Redshift at summere salg kolonne for alle foregående rækker. Vi gør det ved at bruge vinduesfunktionen OVER, og nævner rækker mellem ubegrænset foregående og nuværende række . Det vil sige, for hver række skal du kun overveje de foregående rækker for kumulativ sum.

Da vinduesrammen ændres for hver række, vil kun de foregående rækker blive brugt til at beregne løbende total.

Hvis du vil filtrere dine data, før du beregner løbende total i Redshift, kan du gøre det ved at tilføje WHERE-sætning, som vist nedenfor.

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

Bonuslæser: Sådan opretter du pivottabel i PostgreSQL

Da Redshift dybest set er PostgreSQL, kan du også bruge ovenstående forespørgsel til at beregne løbende total i PostgreSQL.

Når du har beregnet den kumulative sum i Rødforskydning, kan du bruge et Redshift-datavisualiseringsværktøj til at plotte det på et linjediagram. Her er et eksempel på et linjediagram for kumulativ total, oprettet ved hjælp af Ubiq.

Hvis du vil oprette diagrammer og dashboards fra Redshift-databasen, kan du prøve Ubiq. Vi tilbyder en 14-dages gratis prøveperiode.

  1. Hvorfor bruge ikke null primær nøgle i TSQL?

  2. Primære nøgler med Apache Spark

  3. 'datetime2' fejl ved brug af entity framework i VS 2010 .net 4.0

  4. MariaDB numeriske funktioner (fuld liste)