只要包含的值为IS NULL,SQL查询就会为SUM(表达式)返回NULL

spe*_*593 4 mysql sql null aggregate-functions

对于MySQL,我想要一个返回表达式的SUM的查询,EXCEPT我希望如果SUM中包含的任何表达式为NULL,则返回的值为NULL.(SUM的正常操作是忽略NULL值.

这是一个简单的测试用例

CREATE TABLE t4 (fee VARCHAR(3), fi INT);
INSERT INTO t4 VALUES ('fo',10),('fo',200),('fo',NULL),('fum',400);

SELECT fee, SUM(fi) AS sum_fi FROM t4 GROUP BY fee
Run Code Online (Sandbox Code Playgroud)

这将返回我期望的结果集:

fee sum_fi
--- ------
fo     210
fum    400
Run Code Online (Sandbox Code Playgroud)

我想要的是一个返回不同结果集的查询:

fee sum_fi
--- ------
fo    NULL
fum    400
Run Code Online (Sandbox Code Playgroud)

我想要的是,只要包含的值为NULL,sum_fi返回的值就为NULL.(这与SUM聚合函数不同,忽略NULL,并返回非NULL表达式的总计.)

问题:我可以使用什么查询来返回所需的结果集?

我没有找到任何表现出这种行为的内置聚合函数.

awm*_*awm 13

如何使用SUM(fi is NULL)来确定数据集中是否有NULL值?这应该工作:

SELECT fee, IF(SUM(fi is NULL), NULL, SUM(fi)) AS sum_fi FROM t4 GROUP BY fee
Run Code Online (Sandbox Code Playgroud)