Menu
Coddy logo textTech

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 users

SUM(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.

challenge icon

Défi

Facile

Tables et colonnes disponibles :

  • transactions : id, category, type, amount

type est soit 'sale', soit 'refund'. Pour chaque category, retournez :

  • category
  • net_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
quiz iconTestez-vous

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

Entraînez-vous par vous-même : Playground SQL