计算 MySQL 中 0 的数量

Counting the amount of 0's in MySQL

我想计算 table 中 zero/false 的数量,因为 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 不是。

See this db<>fiddle

编辑

想了一晚上后,我正在修改我的答案。没有什么问题,就是没有达到应有的程度。

题中的问题和我原来的答案是不清楚到底算了什么。我们正在计算 FALSE,是的 - 但在 en_participation 为 FALSE 的情况下,我们 return 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

See this db<>fiddle for the improved answer

问题和我原来的答案也是return0作为可数值。这是正确的,但乍一看可能会造成混淆。我更新的答案 returns 1 对于我认为更好的可数行。

(对于那些想知道“这家伙怎么有时间做这件事的人?”-我在家做膝关节置换手术,所以我很无聊而且很受伤,这是一个很好的消遣。:- )