K tomu chcete vnější spojení (a musíte použít osobu jako "řídící" stůl)
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;
Důvod, proč to funguje, je ten, že vnější (levé) spojení vrátí NULL pro osoby, které nemají schůzku. Agregační funkce count() nebude počítat NULL hodnoty, a tak dostanete nulu.
Pokud se chcete dozvědět více o vnějších spojeních, zde je pěkný návod:https://sqlzoo.net/wiki/Using_Null