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.
Défi
FacileTables et colonnes disponibles :
orders:id,customer_id,status
Pour chaque customer_id, renvoyez :
customer_idtotal: nombre total de commandes passées par ce clientshipped: nombre de commandes pour lesquellesstatus = 'shipped'cancelled: nombre de commandes pour lesquellesstatus = '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
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