Database
 sql >> Base de données >  >> RDS >> Database

Comment calculer le total cumulé dans Redshift

Le total cumulé, également appelé total cumulé, est une mesure KPI utile pour surveiller les valeurs totales au fil du temps. Si vos données sont stockées dans Amazon Redshift, il est assez facile de calculer la somme cumulée dans Redshift. Voyons comment calculer le total cumulé dans Redshift.

Comment calculer le total cumulé dans Redshift

Voici les étapes pour calculer le total cumulé dans Redshift. Disons que vous avez le tableau suivant qui contient les ventes quotidiennes

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

Supposons que vous souhaitiez calculer la somme cumulée des ventes, comme ceci,

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

Voici la requête SQL pour calculer le total cumulé dans Redshift. Étant donné que Redshift est essentiellement PostgreSQL, toutes ses fonctions et expressions sont disponibles dans PostgreSQL. Nous allons donc utiliser une fonction Window, disponible dans PostgreSQL, pour ce faire.

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

Examinons en détail la requête ci-dessus. La fonction SOMME ci-dessus calcule la somme cumulée pour chaque ligne. Cependant, nous utilisons une fonction de fenêtre OVER qui nous aide à définir le nombre de lignes à utiliser pour calculer le total cumulé dans Redshift.

Lecture bonus :Comment calculer la moyenne mobile dans Redshift

Tout d'abord, nous classons nos données par ordre chronologique par order_date pour nous assurer que nous additionnons les bonnes lignes pour chaque somme cumulée. Ensuite, pour chaque ligne, nous disons à Redshift d'additionner vente colonne pour toutes les lignes précédentes. Pour ce faire, nous utilisons la fonction de fenêtre OVER et mentionnons les lignes entre la ligne précédente et la ligne actuelle illimitées . Autrement dit, pour chaque ligne, ne considérez que les lignes précédentes pour la somme cumulée.

Au fur et à mesure que le cadre de la fenêtre change pour chaque ligne, seules les lignes précédentes seront utilisées pour calculer le total cumulé.

Si vous souhaitez filtrer vos données avant de calculer le total cumulé dans Redshift, vous pouvez le faire en ajoutant la clause WHERE, comme indiqué ci-dessous.

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

Lecture bonus : Comment créer un tableau croisé dynamique dans PostgreSQL

De plus, étant donné que Redshift est essentiellement PostgreSQL, vous pouvez également utiliser la requête ci-dessus pour calculer le total cumulé dans PostgreSQL.

Après avoir calculé la somme cumulée dans Redshift, vous pouvez utiliser un outil de visualisation de données Redshift pour la tracer sur un graphique linéaire. Voici un exemple de graphique linéaire pour le total cumulé, créé à l'aide d'Ubiq.

Si vous souhaitez créer des graphiques et des tableaux de bord à partir de la base de données Redshift, vous pouvez essayer Ubiq. Nous offrons un essai gratuit de 14 jours.