由于en_participation
是Boolean
变量,所以我想计算表中的零/假的数量。但我查了一下,当我在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,我认为这更好。
(对于那些想知道的人来说,"这家伙怎么有时间这样做?"-我在家做膝盖置换手术,正在康复,所以我很无聊,也很受伤,这很好地分散了我的注意力。:-(