TRUE 和 FALSE 在 SUM() 中不起作用

作者:编程家 分类: excel 时间:2025-12-15

根据 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的数量,以及它们的总和。

sql

CREATE 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_false

FROM 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()函数中的处理方式的影响。