https://modern-sql.com/concept/null#aggregates说:
考虑一下如何通过表达式传播null 并且在汇总之前删除空值会影响 以下表达式:
SUM(a + b)
SUM(a)+ SUM(b)
我不太确定我是否理解它们的含义以及有什么区别。
我得到的NULL聚合值可能为0。但是为什么这两个语句之间存在差异?
答案 0 :(得分:1)
请考虑以下数据:
a b
1 NULL
NULL 2
3 3
表达式sum(a + b)
将返回6。为什么?归纳为:
1 + NULL --> NULL
NULL + 2 --> NULL
3 + 3 --> 6
这些值的sum()
是6。
如果您进行计算sum(a) + sum(b)
,则NULL
值将合并到每一列中,您将得到(1 + 3) + (2 + 3)
-> 9。
Here是db <>小提琴,说明了这种效果。