PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Comment inclure les résultats zéro/0 dans l'agrégat COUNT ?

Vous voulez une jointure externe pour cela (et vous devez utiliser person comme table "pilote")

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;

La raison pour laquelle cela fonctionne, c'est que la jointure externe (gauche) renverra NULL pour les personnes qui n'ont pas de rendez-vous. La fonction d'agrégation count() ne comptera pas NULL valeurs et ainsi vous obtiendrez un zéro.

Si vous voulez en savoir plus sur les jointures externes, voici un bon tutoriel :http://sqlzoo.net/wiki/Using_Null