我正在运行Hive 1.1.0,并看到两个bigint
列active_users
和inactive_users
,SUM(active_users + inactive_users)
<SUM(active_users) + SUM(inactive_users)
。
既然应该简单地将整数相加,为什么会这样呢?
最佳答案
当一个但不是两个值都是NULL
时就是这种情况。
因此,请考虑:
a b
1 1
2 NULL
NULL 3
那么
sum(a) + sum(b)
是(1 + 2)
和(1 + 3)
= 7的总和。NULL
被忽略。但是,
sum(a + b)
是以下各项的总和: (1 + 1)
(2 + NULL)
(NULL + 3)
计算结果为:
2
NULL
NULL
NULL
被忽略,因此结果为2。换句话说,
SUM()
会忽略NULL
的值,但+
不会。关于sql - 为什么Hive中的SUM(a + b)!= SUM(a)+ SUM(b)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56654428/