Menu
Coddy logo textTech

COUNT avec CASE

Fait partie de la section Au-delà des bases du Journey SQL de Coddy. Leçon 12 sur 27.

Vous pouvez placer une expression CASE dans une fonction d’agrégation. L’astuce est que COUNT ignore NULL ; ainsi, un CASE sans ELSE ne compte que les lignes qui correspondent à la condition.

SELECT
    COUNT(*) AS total,
    COUNT(CASE WHEN status = 'active' THEN 1 END) AS active_count
FROM users

À présent, active_count est le nombre de lignes 'active', même si nous n’avons pas filtré toute la requête. C’est l’astuce qui se cache derrière toutes les requêtes de tableau de bord multi-métriques que vous écrirez.

challenge icon

Défi

Facile

Tables et colonnes disponibles :

  • orders : id, customer_id, status

Pour chaque customer_id, renvoyez :

  • customer_id
  • total : nombre total de commandes passées par ce client
  • shipped : nombre de commandes pour lesquelles status = 'shipped'
  • cancelled : nombre de commandes pour lesquelles status = 'cancelled'

Renvoyez uniquement les clients ayant au moins une commande annulée. Triez par customer_id.

Essayez vous-même

SELECT customer_id,
       COUNT(*) AS total,
       -- expédiés, annulés en utilisant COUNT(CASE ...)
FROM orders
GROUP BY customer_id
-- filtrer les clients ayant au moins une annulation
ORDER BY customer_id
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