Hive:对指定组进行求和(HiveQL)

 sdfqw4543gf 发布于 2022-12-31 10:08

我有一张桌子:

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;

我看了一下这些文档但有那么神秘,我不知道如何解决这个问题.我使用Hive v0.12.0,HDP v2.0.6,HortonWorks Hadoop发行版.

1 个回答
  • 与@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;
    

    2022-12-31 10:09 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有