计算 MySQL 中 0 的数量



由于en_participationBoolean变量,所以我想计算表中的零/假的数量。但我查了一下,当我在SELECT语句中将0替换为1时,它工作正常,但当我将其替换为0时,它会给出相同的结果。

如有任何帮助,将不胜感激

SELECT count(CASE WHEN en_participation THEN 0 END) FROM Enrolls

计算0的最简单方法是求和:

SELECT SUM(NOT en_participation) AS count_zeros,
SUM(en_participation) AS count_ones
FROM Enrolls

这里,表达式NOT en_participation将0s变为1s,将1s变为0s

您没有告诉它在不匹配的情况下该怎么办:

SELECT COUNT(CASE
WHEN not en_participation
THEN 0
ELSE NULL
END) AS TOTAL_COUNT
FROM Enrolls

零是一个可计数的值。NULL不是。

请参阅此数据库<gt;小提琴

编辑

经过一个晚上的思考,我正在修改我的答案。它没有什么问题,但它并没有达到应有的效果

这个问题的问题和我最初的答案是,不清楚到底统计了什么。是的,我们正在计算FALSE,但在en_participation为FALSE的情况下,我们返回0,虽然这个可计数值,但很容易误解它。因此,我得出了以下结论:

SELECT COUNT(CASE en_participation
WHEN true THEN 1
WHEN false THEN NULL
END) AS TRUE_COUNT,
COUNT(CASE en_participation
WHEN true THEN NULL
WHEN false THEN 1
END) AS FALSE_COUNT
FROM Enrolls

请参阅此数据库<gt;改进答案的小提琴

这个问题和我最初的答案也返回0作为可计数值。这是正确的,但乍一看可能会令人困惑。我更新后的答案对可计数行返回1,我认为这更好。

(对于那些想知道的人来说,"这家伙怎么有时间这样做?"-我在家做膝盖置换手术,正在康复,所以我很无聊,也很受伤,这很好地分散了我的注意力。:-(

最新更新