Cas SQL avec la clause Sum et Group By

Cas Sql Avec La Clause Sum Et Group By



Dans ce didacticiel, nous allons apprendre à utiliser l'instruction CASE avec la fonction SUM et une clause GROUP BY.

Ce didacticiel ne couvre pas les principes fondamentaux de l'utilisation de l'instruction SQL Case, de la fonction sum() ou de la clause GROUP BY. Si vous recherchez les bases de ces fonctionnalités SQL, consultez nos tutoriels sur les sujets à découvrir davantage.







Problème:

Disons que nous avons un tableau nommé 'commandes' et que nous souhaitons obtenir le total des ventes pour chaque client regroupé par ID client, mais nous voulons également calculer une remise pour les clients qui ont passé plus de deux commandes.



Le tableau est présenté ci-dessous :



Commandes CRÉER TABLE (
order_id INT CLÉ PRIMAIRE,
id_client INT,
id_produit INT,
date_commande DATE,
quantité INT,
prix DÉCIMAL ( dix , 2 )
) ;


Insérez un exemple de données dans le tableau, comme illustré ci-dessous :





INSÉRER DANS les commandes ( order_id, customer_id, product_id, order_date, quantité, prix )
VALEURS
( 1 , 101 , 1 , '2022-04-01' , 2 , 10,99 ) ,
( 2 , 102 , 2 , '2022-04-01' , 1 , 19,99 ) ,
( 3 , 103 , 1 , '2022-04-02' , 3 , 8,99 ) ,
( 4 , 101 , 3 , '2022-04-03' , 2 , 15,99 ) ,
( 5 , 102 , 1 , '2022-04-03' , 1 , 12,99 ) ,
( 6 , 104 , 2 , '2022-04-04' , 4 , 7,99 ) ,
( 7 , 103 , 3 , '2022-04-05' , 2 , 21,99 ) ,
( 8 , 101 , 2 , '2022-04-06' , 1 , 18,99 ) ,
( 9 , 104 , 1 , '2022-04-07' , 2 , 9,99 ) ,
( dix , 102 , 3 , '2022-04-07' , 3 , 14,99 ) ;


Cela devrait créer une table comme suit :



Cas SQL avec la clause Sum et Group By

Pour récupérer le total des ventes de chaque client regroupé par ID et calculer la remise pour les clients qui ont passé plus de deux commandes, nous pouvons utiliser l'instruction CASE conjointement avec la clause SUM et GROUP BY, comme illustré ci-dessous :

sélectionner commandes.id_client, somme ( commandes.quantité * commandes.prix * ( cas quand compter ( * ) > 2 alors 0,9 autre 1 fin ) ) comme total_sales des commandes ;


Dans l'exemple donné, nous utilisons l'instruction SQL CASE pour vérifier si le client a passé plus de deux commandes.

Si un client a passé plus de deux commandes, nous multiplions le total_sales par 0,9 ce qui applique une remise de 10%.

Conclusion

Nous avons expliqué comment utiliser l'instruction SQL CASE avec les clauses SUM() et GROUP BY.