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

Come calcolare il totale parziale in Redshift

Il totale cumulativo, noto anche come totale parziale, è una metrica KPI utile per monitorare i valori totali della somma nel tempo. Se i tuoi dati sono archiviati in Amazon Redshift, è abbastanza facile calcolare la somma cumulativa in Redshift. Vediamo come calcolare il totale parziale in Redshift.

Come calcolare il totale parziale in Redshift

Ecco i passaggi per calcolare il totale parziale in Redshift. Supponiamo che tu abbia la seguente tabella che contiene le vendite giornaliere

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

Supponiamo che tu voglia calcolare la somma cumulativa delle vendite, in questo modo,

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

Ecco la query SQL per calcolare il totale parziale in Redshift. Poiché Redshift è fondamentalmente PostgreSQL, tutte le sue funzioni ed espressioni sono disponibili in PostgreSQL. Quindi useremo una funzione finestra, disponibile in PostgreSQL, per farlo.

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

Diamo un'occhiata alla query di cui sopra in dettaglio. La funzione SOMMA sopra calcola la somma cumulativa per ogni riga. Tuttavia, utilizziamo una funzione finestra OVER che ci aiuta a definire il numero di righe da utilizzare per calcolare il totale parziale in Redshift.

Bonus Leggi:Come calcolare la media mobile in Redshift

Innanzitutto, ordiniamo i nostri dati in ordine cronologico per data_ordine per assicurarci di sommare le righe giuste per ogni somma cumulativa. Successivamente, per ogni riga, diciamo a Redshift di sommare vendita colonna per tutte le righe precedenti. Lo facciamo utilizzando la funzione finestra OVER e menzioniamo righe tra la riga precedente e quella corrente illimitate . Cioè, per ogni riga, considera solo le righe precedenti per la somma cumulativa.

Poiché la cornice della finestra cambia per ogni riga, solo le righe precedenti verranno utilizzate per calcolare il totale parziale.

Se desideri filtrare i tuoi dati prima di calcolare il totale parziale in Redshift, puoi farlo aggiungendo la clausola WHERE, come mostrato di seguito.

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

Bonus Leggi: Come creare una tabella pivot in PostgreSQL

Inoltre, poiché Redshift è fondamentalmente PostgreSQL, puoi anche utilizzare la query precedente per calcolare il totale parziale in PostgreSQL.

Dopo aver calcolato la somma cumulativa in Redshift, puoi utilizzare uno strumento di visualizzazione dei dati Redshift per tracciarlo su un grafico a linee. Ecco un esempio di grafico a linee per il totale cumulativo, creato utilizzando Ubiq.

Se vuoi creare grafici e dashboard dal database Redshift, puoi provare Ubiq. Offriamo una prova gratuita di 14 giorni.