Comment calculer des totaux conditionnels en utilisant la déclaration SQL CASE et la fonction SUM

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.

Sommaire

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.

Sommaire