如何在使用 WHERE 删除的行上将计数值显示为 0(微软访问)

Posted

技术标签:

【中文标题】如何在使用 WHERE 删除的行上将计数值显示为 0(微软访问)【英文标题】:How to show count value as 0 on rows removed with WHERE (microsoft access) 【发布时间】:2016-09-03 21:17:26 【问题描述】:

我有两张表,其中一张表代表带有位置的调查,另一张表代表受访者(每次调查都有很多人)。我试图显示每个位置超过一定年龄的人数,但是有些省份没有超过一定年龄的人,因此不会显示在结果表中。如果没有人超过一定年龄,我希望计数显示为零。 我有:

SELECT a.location, Count([b.age])
FROM Survey AS a LEFT JOIN person AS b ON a.surveyid = b.surveyid
Where b.age >= 85
GROUP BY a.location;

我意识到 WHERE 子句是消除零计数结果的原因,但我无法弄清楚我需要的子查询。

【问题讨论】:

【参考方案1】:

改为使用条件聚合。这意味着将布尔条件移动到聚合函数的参数

SELECT s.location,
       SUM(IIF(p.age >= 85, 1, 0))
FROM Survey AS s LEFT JOIN
     person AS p
     ON s.surveyid = p.surveyid
GROUP BY s.location;

注意到我将表别名更改为表名的缩写。这使得查询更容易理解。

【讨论】:

以上是关于如何在使用 WHERE 删除的行上将计数值显示为 0(微软访问)的主要内容,如果未能解决你的问题,请参考以下文章

r - 如果下面的行包含一个值,则从计数中删除

如何使用引用多个表的 WHERE 子句删除 sqlite 中的行?

如何使此查询也返回计数值为 0 的行?

如何在 Prettytable 中删除值小于 0% 的行

Laravel:在不同的行中使用不同的 where 条件进行查询

如何在matlab图形上将日期显示为字符串