Calculer les totaux cumulés (Running Totals)
Dans cette étape, vous apprendrez à calculer les totaux cumulés (sommes cumulatives) en utilisant les fonctions de fenêtre. Les totaux cumulés sont utiles pour suivre la somme des valeurs sur une période de temps ou sur un ensemble de lignes.
Pour calculer les totaux cumulés, vous utilisez la fonction SUM()
avec la clause OVER()
et une clause ORDER BY
pour spécifier l'ordre dans lequel la somme est calculée.
Tout d'abord, ajoutons une colonne sale_date
(date de vente) à la table sales
et remplissons-la avec des exemples de dates. Exécutez les commandes suivantes à l'invite sqlite>
:
ALTER TABLE sales ADD COLUMN sale_date DATE;
UPDATE sales SET sale_date = '2023-01-01' WHERE product_name = 'Laptop';
UPDATE sales SET sale_date = '2023-01-05' WHERE product_name = 'Keyboard';
UPDATE sales SET sale_date = '2023-01-10' WHERE product_name = 'Mouse';
UPDATE sales SET sale_date = '2023-01-15' WHERE product_name = 'Monitor';
UPDATE sales SET sale_date = '2023-01-20' WHERE product_name = 'Headphones';
UPDATE sales SET sale_date = '2023-01-25' WHERE product_name = 'Webcam';
Ces commandes ajoutent une colonne sale_date
à la table sales
et mettent à jour la table avec des exemples de dates pour chaque produit.
Maintenant, calculons le total cumulé de sales_amount
au fil du temps, trié par sale_date
. Exécutez la requête suivante :
SELECT
sale_date,
product_name,
sales_amount,
SUM(sales_amount) OVER (ORDER BY sale_date) AS running_total
FROM
sales;
Cette requête calcule le total cumulé de sales_amount
au fil du temps, trié par sale_date
.
SUM(sales_amount) OVER (ORDER BY sale_date)
calcule la somme cumulative de sales_amount
jusqu'à chaque sale_date
.
ORDER BY sale_date
spécifie que le total cumulé doit être calculé en fonction de la sale_date
par ordre croissant.
Résultat attendu :
2023-01-01|Laptop|1200|1200
2023-01-05|Keyboard|75|1275
2023-01-10|Mouse|25|1300
2023-01-15|Monitor|300|1600
2023-01-20|Headphones|100|1700
2023-01-25|Webcam|50|1750
La colonne running_total
(total cumulé) affiche la somme cumulative de sales_amount
jusqu'à chaque sale_date
. Par exemple, le total cumulé au '2023-01-15' est de 1600, ce qui est la somme des ventes de '2023-01-01', '2023-01-05', '2023-01-10' et '2023-01-15'.