PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Wie schließe ich null / 0 Ergebnisse in das COUNT-Aggregat ein?

Sie möchten dafür einen äußeren Join (und Sie müssen person als "treibende" Tabelle verwenden)

SELECT person.person_id, COUNT(appointment.person_id) AS "number_of_appointments"
FROM person 
  LEFT JOIN appointment ON person.person_id = appointment.person_id
GROUP BY person.person_id;

Der Grund, warum dies funktioniert, ist, dass der äußere (linke) Join NULL zurückgibt für diejenigen, die keinen Termin haben. Die Aggregatfunktion count() zählt NULL nicht Werte und somit erhalten Sie eine Null.

Wenn Sie mehr über Outer Joins erfahren möchten, finden Sie hier ein nettes Tutorial:http://sqlzoo.net/wiki/Using_Null