【发布时间】:2014-08-01 14:03:51
【问题描述】:
我有一张桌子:
key product_code cost
1 UK 20
1 US 10
1 EU 5
2 UK 3
2 EU 6
我想找到每组“键”的所有产品的总和并附加到每一行。例如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
我更愿意在不使用子连接的情况下执行此操作,因为这样做效率低下。我最好的想法是将over 函数与sum 函数结合使用,但我无法让它工作。我最好的尝试:
SELECT key, product_code, sum(costs) over(PARTITION BY key)
FROM test
GROUP BY key, product_code;
我看过docs,但那里太神秘了,我不知道该怎么做。我正在使用 Hive v0.12.0、HDP v2.0.6、HortonWorks Hadoop 发行版。
【问题讨论】:
-
你最好的尝试有什么问题?
-
@fmx 它只是给出了一个语法错误。我一定是以错误的方式使用 over 函数
标签: hadoop hive hiveql hortonworks-data-platform