SUM avec CASE
Fait partie de la section Au-delà des bases du Journey SQL de Coddy. Leçon 13 sur 27.
La même idée fonctionne avec SUM : et c’est encore plus flexible. CASE peut renvoyer 1 pour les lignes correspondantes et 0 pour tout le reste, ou renvoyer n’importe quelle valeur numérique afin de pondérer les lignes différemment.
SELECT
SUM(CASE WHEN status = 'active' THEN 1 ELSE 0 END) AS active_count,
SUM(CASE WHEN plan = 'pro' THEN amount ELSE 0 END) AS pro_revenue
FROM usersSUM(CASE … THEN 1 ELSE 0 END) et COUNT(CASE … THEN 1 END) donnent le même résultat pour le comptage ; choisissez le style que votre équipe préfère.
Défi
FacileTables et colonnes disponibles :
transactions:id,category,type,amount
type est soit 'sale', soit 'refund'. Pour chaque category, retournez :
categorynet_revenue: somme des montants des ventes moins la somme des montants des remboursements
Calculez net_revenue dans une seule expression SUM(CASE …), où les remboursements contribuent à hauteur de leur montant sous forme de nombre négatif. Triez par net_revenue par ordre décroissant.
Essayez vous-même
SELECT category,
-- un SUM(CASE ...) où les remboursements comptent négativement
FROM transactions
GROUP BY category
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Au-delà des bases
1Logique conditionnelle
CASE WHENCASE dans ORDER BYCOALESCE pour les NULLNULLIF et IIFRécapitulatif - Présence3Agrégation conditionnelle
COUNT avec CASESUM avec CASEPivoter les lignes en colonnesRécapitulatif - Sources de traficEntraînez-vous par vous-même : Playground SQL