sql >> Database >  >> RDS >> PostgreSQL

Hoe kan ik nul/0 resultaten opnemen in het COUNT-aggregaat?

Je wilt hiervoor een outer join (en je moet person gebruiken als de "driving" tafel)

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;

De reden waarom dit werkt, is dat de buitenste (linker) join NULL zal retourneren voor diegene die geen afspraak hebben. De aggregatiefunctie count() telt niet NULL waarden en dus krijg je een nul.

Als je meer wilt weten over outer joins, is hier een leuke tutorial:http://sqlzoo.net/wiki/Using_Null



  1. Subquery's versus joins

  2. SQL-ontwikkelaar start niet

  3. Waarom komt de varchar-sorteervolgorde van Oracle niet overeen met het gedrag van varchar-vergelijking?

  4. Volgorde als standaardwaarde voor een kolom