我正在运行Hive 1.1.0,并看到两个bigintactive_usersinactive_usersSUM(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/

10-12 04:59