查询对具有10个元组的表的单个列执行求和聚合。如果恰好其中一个元组在该列上具有NULL值,则将发生以下哪项?
会是3个吗?
答案 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;