Maison >base de données >tutoriel mysql >Comment puis-je inclure des comptes nuls dans les agrégats SQL COUNT ?

Comment puis-je inclure des comptes nuls dans les agrégats SQL COUNT ?

Linda Hamilton
Linda Hamiltonoriginal
2025-01-08 18:22:42378parcourir

How Can I Include Zero Counts in SQL COUNT Aggregates?

Gestion du nombre de rendez-vous nul dans les agrégats SQL COUNT

La fonction

SQL COUNT omet parfois les valeurs nulles des résultats agrégés. Ce guide montre comment garantir que les comptes zéro sont inclus lors du comptage des enregistrements.

Considérons deux tableaux : person et appointment. Une personne peut avoir plusieurs rendez-vous, et le tableau appointment comprend une colonne person_id.

Le problème :

Une requête simple GROUP BY pourrait manquer des personnes sans rendez-vous :

<code class="language-sql">SELECT person_id, COUNT(person_id) AS "number_of_appointments"
FROM appointment
GROUP BY person_id;</code>

La solution : JOINDRE À GAUCHE

Pour inclure les personnes sans rendez-vous, utilisez un LEFT JOIN :

<code class="language-sql">SELECT p.person_id, COUNT(a.person_id) AS "number_of_appointments"
FROM person p
LEFT JOIN appointment a ON p.person_id = a.person_id
GROUP BY p.person_id;</code>

Explication :

  • Le LEFT JOIN garantit que toutes les lignes du tableau person (le tableau de gauche) sont incluses dans le résultat, quelles que soient les correspondances dans le tableau appointment.
  • Si une personne n'a pas de rendez-vous, COUNT(a.person_id) renvoie 0 (et non NULL, comme ce serait le cas avec COUNT(*)).
  • GROUP BY p.person_id regroupe les résultats par identifiant de personne, reflétant avec précision le nombre de rendez-vous nuls.

Cette approche garantit un décompte complet, incluant les individus sans rendez-vous associé.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn