Lors de l’agrégation de données en SQL, il arrive parfois que vous ayez besoin de calculer des totaux en fonction de conditions spécifiques. Par exemple, vous pouvez vouloir calculer le total des données qui répondent à certains critères ou basées sur plusieurs conditions. En combinant l’instruction CASE et la fonction SUM, vous pouvez obtenir une agrégation flexible. Cet article explique les méthodes spécifiques et vous apprend à écrire des requêtes SQL pour calculer des totaux conditionnels.
Utilisation de base de l’instruction CASE et de la fonction SUM
Les instructions SQL CASE et la fonction SUM sont des outils puissants pour effectuer une agrégation conditionnelle. Tout d’abord, comprenons l’utilisation de base de chacun.
Syntaxe de base de l’instruction CASE
L’instruction CASE est utilisée pour renvoyer différentes valeurs en fonction de conditions spécifiques. La syntaxe de base est la suivante :
CASE
WHEN condition1 THEN value1
WHEN condition2 THEN value2
...
ELSE valueN
END
Dans cette syntaxe, si la condition1 est vraie, value1 est renvoyée ; si la condition2 est vraie, value2 est renvoyée ; si aucune des conditions n’est remplie, valueN est renvoyée.
Syntaxe de base de la fonction SUM
La fonction SUM est utilisée pour calculer le total d’une colonne spécifiée. La syntaxe de base est la suivante :
SELECT SUM(column_name) FROM table_name;
Dans cette syntaxe, le total de toutes les lignes de la colonne spécifiée dans la table est calculé.
Combinaison de l’instruction CASE et de la fonction SUM
En combinant l’instruction CASE et la fonction SUM, vous pouvez calculer le total des données qui répondent à des conditions spécifiques. Par exemple, vous pouvez l’utiliser comme suit :
SELECT SUM(CASE
WHEN condition THEN value
ELSE 0
END) AS conditional_total
FROM table_name;
Dans cette requête, si la condition est vraie, la valeur est additionnée ; si la condition est fausse, 0 est additionné. De cette façon, le total conditionnel est calculé.
Exemples de requêtes SQL pour calculer des totaux conditionnels
Voyons des exemples spécifiques de requêtes SQL qui combinent l’instruction CASE et la fonction SUM pour calculer des totaux conditionnels.
Exemple 1 : Calcul du total des données qui répondent à des conditions spécifiques
Par exemple, si vous avez une table de données de ventes et que vous souhaitez calculer le total des ventes pour une catégorie de produits spécifique, vous pouvez utiliser la requête suivante :
SELECT
SUM(CASE
WHEN category = 'Electronics' THEN sales_amount
ELSE 0
END) AS electronics_sales_total
FROM sales;
Dans cette requête, si la category
est ‘Electronics’, le sales_amount
est additionné ; sinon, 0 est additionné. En conséquence, le total des ventes pour la catégorie ‘Electronics’ est calculé.
Exemple 2 : Calcul des totaux basés sur plusieurs conditions
Ensuite, voici un exemple de calcul de différents totaux basés sur plusieurs conditions. Par exemple, si vous souhaitez calculer le total des ventes pour les électroniques et les vêtements à partir des données de ventes, vous pouvez utiliser la requête suivante :
SELECT
SUM(CASE
WHEN category = 'Electronics' THEN sales_amount
ELSE 0
END) AS electronics_sales_total,
SUM(CASE
WHEN category = 'Clothing' THEN sales_amount
ELSE 0
END) AS clothing_sales_total
FROM sales;
Dans cette requête, le sales_amount
est additionné si la category
est ‘Electronics’ ou ‘Clothing’, ce qui permet de calculer deux totaux de ventes différents.
Exemple 3 : Inclusion de calculs basés sur des conditions dans le total
Voyons également un exemple où différents calculs sont effectués en fonction des conditions. Par exemple, si vous souhaitez calculer le montant total des ventes avec une remise appliquée, vous pouvez utiliser la requête suivante :
SELECT
SUM(CASE
WHEN discount_applied = 'Yes' THEN sales_amount * 0.9
ELSE sales_amount
END) AS total_sales_with_discount
FROM sales;
Dans cette requête, si discount_applied
est ‘Yes’, la valeur de sales_amount
multipliée par 0.9 est additionnée ; si aucune remise n’est appliquée, la sales_amount
originale est additionnée. De cette façon, le montant total des ventes en tenant compte de la remise est calculé.
Méthodes de calcul des totaux en utilisant plusieurs conditions
Expliquons comment calculer des totaux en utilisant plusieurs conditions avec des exemples spécifiques. Cela permet des agrégations plus complexes.
Exemple 1 : Calcul des totaux en combinant plusieurs conditions
Par exemple, si vous souhaitez calculer le total des ventes pour une région et une période spécifiques, vous pouvez utiliser la requête suivante :
SELECT
SUM(CASE
WHEN region = 'North' AND sale_date BETWEEN '2023-01-01' AND '2023-12-31' THEN sales_amount
ELSE 0
END) AS north_region_sales_2023
FROM sales;
Dans cette requête, si la region
est ‘North’ et que la sale_date
est dans l’année 2023, le sales_amount
est additionné ; sinon, 0 est additionné.
Exemple 2 : Calcul de différents totaux pour différentes conditions
Ensuite, voici un exemple de calcul de différents totaux pour différentes conditions. Par exemple, si vous souhaitez calculer le total des ventes lorsqu’une promotion spécifique est appliquée et lorsqu’elle ne l’est pas, vous pouvez utiliser la requête suivante :
SELECT
SUM(CASE
WHEN promotion_applied = 'Yes' THEN sales_amount
ELSE 0
END) AS sales_with_promotion,
SUM(CASE
WHEN promotion_applied = 'No' THEN sales_amount
ELSE 0
END) AS sales_without_promotion
FROM sales;
Dans cette requête, le sales_amount
est additionné si promotion_applied
est ‘Yes’ ou ‘No’, ce qui permet de calculer deux totaux de ventes différents.
Exemple 3 : Calcul des totaux en utilisant des conditions imbriquées
En outre, voyons un exemple de calcul des totaux en utilisant des conditions imbriquées. Par exemple, si vous souhaitez appliquer différents taux de remise en fonction du type de produit et du montant des ventes et calculer le total, vous pouvez utiliser la requête suivante :
SELECT
SUM(CASE
WHEN category = 'Electronics' THEN
CASE
WHEN sales_amount > 1000 THEN sales_amount * 0.9
ELSE sales_amount * 0.95
END
WHEN category = 'Clothing' THEN
CASE
WHEN sales_amount > 500 THEN sales_amount * 0.85
ELSE sales_amount * 0.90
END
ELSE sales_amount
END) AS total_sales_with_discounts
FROM sales;
Dans cette requête, si la category
est ‘Electronics’, différents taux de remise sont appliqués en fonction du montant des ventes, et si la category
est ‘Clothing’, différents taux de remise sont appliqués de manière similaire. Si les conditions ne sont pas remplies, le montant des ventes original est additionné. De cette manière, le total en tenant compte des conditions complexes est calculé.
Exemples d’applications pratiques
Montrons des exemples d’applications pratiques dans des scénarios d’affaires réels, en introduisant des utilisations pratiques de l’instruction CASE et de la fonction SUM. Cela vous aidera à comprendre des méthodes spécifiques utiles pour les tâches d’agrégation de données quotidiennes.
Exemple 1 : Calcul des totaux de ventes mensuels
Si vous souhaitez agréger les données de ventes d’une entreprise par mois et calculer les totaux de ventes mensuels, vous pouvez utiliser la requête suivante :
SELECT
MONTH(sale_date) AS sale_month,
SUM(sales_amount) AS monthly_sales
FROM sales
GROUP BY MONTH(sale_date)
ORDER BY sale_month;
Dans cette requête, le mois est extrait de sale_date
et le montant des ventes pour chaque mois est additionné. Le résultat est affiché sous forme de totaux de ventes mensuels.
Exemple 2 : Calcul des ventes et du taux de réalisation par département
Si vous souhaitez calculer les ventes et le taux de réalisation pour chaque département d’une entreprise, vous pouvez utiliser la requête suivante :
SELECT
department,
SUM(sales_amount) AS total_sales,
SUM(sales_amount) / SUM(sales_target) * 100 AS achievement_rate
FROM sales
GROUP BY department;
Dans cette requête, le total des ventes et les objectifs de ventes pour chaque département sont calculés, et le taux de réalisation (pourcentage des ventes totales par rapport aux objectifs de ventes) est déterminé.
Exemple 3 : Calcul du montant total des achats et du montant des achats remisés par client
Si vous souhaitez calculer le montant total des achats et le montant total des achats remisés pour chaque client, vous pouvez utiliser la requête suivante :
SELECT
customer_id,
SUM(sales_amount) AS total_purchase,
SUM(CASE
WHEN discount_applied = 'Yes' THEN sales_amount
ELSE 0
END) AS discounted_purchase
FROM sales
GROUP BY customer_id;
Dans cette requête, le montant total des achats et le montant total des achats remisés pour chaque client sont calculés. Cela permet une analyse détaillée du comportement d’achat de chaque client.
Exemple 4 : Calcul du statut des stocks et du montant total des ventes des produits
Si vous souhaitez combiner les données de stocks et de ventes pour calculer le statut des stocks et le montant total des ventes des produits, vous pouvez utiliser la requête suivante :
SELECT
p.product_id,
p.product_name,
p.stock_quantity,
SUM(s.sales_amount) AS total_sold
FROM products p
LEFT JOIN sales s ON p.product_id = s.product_id
GROUP BY p.product_id, p.product_name, p.stock_quantity;
Dans cette requête, la table products
est jointe à la table sales
pour calculer la quantité de stock et le montant total des ventes pour chaque produit. De cette façon, la gestion des stocks et la performance des ventes peuvent être comprises simultanément.
En comprenant des exemples d’applications pratiques comme ceux-ci, vous pouvez maîtriser les utilisations pratiques de l’instruction CASE et de la fonction SUM, et les appliquer dans des scénarios d’affaires réels pour acquérir des compétences utiles.
Conclusion
Nous avons expliqué comment calculer de manière flexible des totaux conditionnels en combinant l’instruction SQL CASE et la fonction SUM. De l’utilisation de base aux exemples de requêtes spécifiques, des méthodes pour calculer des totaux en utilisant plusieurs conditions, et des exemples d’applications pratiques, nous avons couvert un large éventail.
En utilisant l’instruction CASE, vous pouvez renvoyer dynamiquement des valeurs en fonction de conditions spécifiques et additionner les résultats avec la fonction SUM. Cela facilite l’agrégation et l’analyse de données complexes.
Dans des scénarios d’affaires réels, vous pouvez appliquer ces techniques dans diverses situations, telles que le calcul des totaux de ventes mensuels, des ventes et des taux de réalisation par département, des montants totaux des achats et des montants remisés pour chaque client, et le statut des stocks et le montant total des ventes des produits.
Utilisez SQL pour effectuer une analyse de données efficace, rationaliser les opérations et accélérer la prise de décision. En maîtrisant la technique de calcul des totaux conditionnels, les opérations d’agrégation de bases de données deviennent plus puissantes et pratiques.