PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Come includere zero/0 risultati nell'aggregato COUNT?

Vuoi un join esterno per questo (e devi usare person come tabella di "guida")

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;

Il motivo per cui funziona è che il join esterno (a sinistra) restituirà NULL per coloro che non hanno appuntamento. La funzione aggregata count() non conterà NULL valori e quindi otterrai uno zero.

Se vuoi saperne di più sugli outer join, ecco un bel tutorial:http://sqlzoo.net/wiki/Using_Null