根据 TRUE 和 FALSE 在 SUM() 中不起作用
在使用SUM()函数来计算一列数据的总和时,我们通常会将真值(TRUE)和假值(FALSE)作为参数传递给函数。然而,有时候我们会发现,无论我们传递的是TRUE还是FALSE,SUM()函数的结果都不受影响。这是为什么呢?让我们来探索一下。在许多编程语言和数据库中,TRUE通常被表示为1,而FALSE通常被表示为0。这意味着当我们将TRUE或FALSE作为参数传递给SUM()函数时,它们会被视为数字1和0进行处理。因此,SUM(TRUE)实际上等同于SUM(1),而SUM(FALSE)则等同于SUM(0)。这就解释了为什么在SUM()函数中使用TRUE和FALSE不起作用。无论我们传递的是TRUE还是FALSE,它们都会被视为数字进行计算。SUM(1)和SUM(0)的结果都只会返回1或0,而不是我们期望的总和。示例代码:假设我们有一个包含了一些布尔值的数据表,我们想要计算其中TRUE的数量和FALSE的数量,以及它们的总和。sqlCREATE TABLE my_table ( id INT, is_true BOOLEAN);INSERT INTO my_table (id, is_true)VALUES (1, TRUE), (2, TRUE), (3, FALSE), (4, TRUE), (5, FALSE);SELECT COUNT(*) AS num_true, SUM(CASE WHEN is_true THEN 1 ELSE 0 END) AS sum_true, SUM(CASE WHEN NOT is_true THEN 1 ELSE 0 END) AS sum_falseFROM my_table;在上面的示例代码中,我们创建了一个名为my_table的数据表,并插入了一些布尔值数据。接下来,我们使用COUNT()函数来计算TRUE的数量,并使用SUM()函数结合CASE语句来计算TRUE和FALSE的总和。通过将is_true列与CASE语句结合使用,我们可以确保只有为TRUE或FALSE的行才会被计算在总和中。这样,我们就能够正确地计算出TRUE和FALSE的总和,而不会受到SUM()函数对TRUE和FALSE的处理方式的影响。:尽管在SUM()函数中使用TRUE和FALSE不起作用,但我们可以通过结合CASE语句和条件来正确计算布尔值的总和。这种方法可以确保只有我们想要计算的行才会被包括在总和中,而不会受到TRUE和FALSE在SUM()函数中的处理方式的影响。