空值和总和?

时间:2018-10-01 02:49:51

标签: sql null sum

查询对具有10个元组的表的单个列执行求和聚合。如果恰好其中一个元组在该列上具有NULL值,则将发生以下哪项?

  1. 查询将返回NULL。
  2. 查询将返回其余9个值的总和。
  3. 查询将引发异常。

会是3个吗?

1 个答案:

答案 0 :(得分:1)

聚合函数将忽略空值。这就是他们行为的定义。

所以您的问题的答案是:2)

您可以轻松地对自己进行测试:

create table test_null(value integer);
insert into test_null
values (1),(1),(1),(1),(1),(1),(1),(1),(1),(null);

select sum(value)
from test_null;

返回

sum
---
  9

使用avg()聚合函数时,“忽略”部分会更加明显。以上测试数据的结果为1,而不是人们认为的0.9。这是因为聚合忽略具有空值的行,因此平均值计算为9/9。

select avg(value)
from test_null;

等效于:

select avg(value)
from test_null
WHERE value IS NOT NULL;

在线示例:http://rextester.com/QQREJS70393