我在 Hive 中有一张桌子,看起来像:
col1 col2
b 1
b 2
a 3
b 2
c 4
c 5
我如何使用 hiveql 将col1
元素组合在一起,对它们求和,按总和排序,以及基于总和创建累积总和 (csum)?
id sum_all csum
a 3 3
b 5 8
c 9 17
我只设法提出了分组和总和,但对累积总和一无所知。Hive 不支持相关子查询
select col1 as id
sum(col2) as sum_all
from t
group by col1
order by sum_all
结果如下:
id sum_all
a 3
b 5
c 9
由于不允许关联子查询,请尝试使用派生表,然后将它们连接起来。
这本质上是派生的 group-by 表上的自联接。首先将分组结果保存到临时表中然后执行自连接可能更有效。
根据手册,Hive 也有窗口聚合,所以你也可以使用它们:
或与: