PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Como incluir resultados zero/0 no agregado COUNT?


Você quer uma junção externa para isso (e você precisa usar pessoa como a tabela de "condução")
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;

A razão pela qual isso está funcionando é que a junção externa (esquerda) retornará NULL para as pessoas que não têm hora marcada. A função agregada count() não contará NULL valores e assim você obterá um zero.

Se você quiser aprender mais sobre associações externas, aqui está um bom tutorial:http://sqlzoo.net/wiki/Using_Null