jos*_*hlk 8 hadoop hive hiveql hortonworks-data-platform
我有一张桌子:
key product_code cost
1 UK 20
1 US 10
1 EU 5
2 UK 3
2 EU 6
Run Code Online (Sandbox Code Playgroud)
我想找到每组"钥匙"的所有产品的总和,并附加到每一行.例如,对于key = 1,找到所有产品的成本总和(20 + 10 + 5 = 35),然后将结果附加到对应于key = 1的所有行.最终结果:
key product_code cost total_costs
1 UK 20 35
1 US 10 35
1 EU 5 35
2 UK 3 9
2 EU 6 9
Run Code Online (Sandbox Code Playgroud)
我更愿意在不使用子连接的情况下这样做,因为这样效率很低.我最好的想法是将该over函数与sum函数结合使用,但我无法使其工作.我最好的尝试:
SELECT key, product_code, sum(costs) over(PARTITION BY key)
FROM test
GROUP BY key, product_code;
Run Code Online (Sandbox Code Playgroud)
我看了一下这些文档但有那么神秘,我不知道如何解决这个问题.我使用Hive v0.12.0,HDP v2.0.6,HortonWorks Hadoop发行版.
jos*_*hlk 10
与@VB_ answer类似,请使用该BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING 语句.
因此,HiveQL查询是:
SELECT key, product_code,
SUM(costs) OVER (PARTITION BY key ORDER BY key ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING)
FROM test;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
41502 次 |
| 最近记录: |