我刚刚得到了一些SQL的困扰。我不认为我可以出色地提出这个问题 - 所以让我给你看看。如何在COUNT聚合中包含“零”/“0”结果?
我有两张桌子,一个叫人,一个叫约会。我正在尝试返回一个人的约会次数(包括零次数)。约会包含person_id
,每个约会有person_id
。所以COUNT(person_id)
是一个明智的做法。
查询:
SELECT person_id, COUNT(person_id) AS "number_of_appointments"
FROM appointment
GROUP BY person_id;
将正确返回,约会为person_id拥有的数量。但是,一个没有任命的人不会被退回(显然,因为他们不在该表中)。
调整,以从人表取为person_id的发言给了我这样的:
SELECT person.person_id, COUNT(appointment.person_id) AS "number_of_appointments"
FROM appointment
JOIN person ON person.person_id = appointment.person_id
GROUP BY person.person_id;
然而,这仍然会只返回一个为person_id谁拥有预约,不是我想要的是与人返回谁有0个约会!
有什么建议吗?
由于表未包含在查询中,GROUP BY看起来像原来问题中的拼写错误。 – 2013-02-10 00:07:41
@JoachimIsaksson我的错误。当然 :) – 2013-02-10 00:08:48