SQLs COUNT
-Funktion lässt manchmal Nullwerte aus aggregierten Ergebnissen weg. In dieser Anleitung wird gezeigt, wie Sie sicherstellen können, dass beim Zählen von Datensätzen Nullzählungen berücksichtigt werden.
Betrachten Sie zwei Tabellen: person
und appointment
. Eine Person kann mehrere Termine haben und die appointment
-Tabelle enthält eine person_id
-Spalte.
Das Problem:
Eine einfache GROUP BY
Abfrage könnte Personen ohne Termin übersehen:
<code class="language-sql">SELECT person_id, COUNT(person_id) AS "number_of_appointments" FROM appointment GROUP BY person_id;</code>
Die Lösung: LEFT JOIN
Um Personen ohne Termine einzubeziehen, verwenden Sie ein 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>
Erklärung:
LEFT JOIN
stellt sicher, dass alle Zeilen aus der person
-Tabelle (der linken Tabelle) im Ergebnis enthalten sind, unabhängig von Übereinstimmungen in der appointment
-Tabelle.COUNT(a.person_id)
0 zurück (nicht NULL, wie es bei COUNT(*)
der Fall wäre).GROUP BY p.person_id
gruppiert die Ergebnisse nach Personen-ID und spiegelt so genau die Anzahl der Null-Termine wider.Dieser Ansatz garantiert eine vollständige Zählung, einschließlich Personen ohne zugehörige Termine.
Das obige ist der detaillierte Inhalt vonWie kann ich Nullzählungen in SQL COUNT-Aggregate einbeziehen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!