【发布时间】:2019-03-18 02:50:06
【问题描述】:
我正在尝试了解如何在 Apache Hive 中使用 rank() over(partition by ),但在获得我想要的结果时遇到了问题。
帖子底部一直是我正在使用的数据集。
我要做的是提出一个声明,根据该部门员工的工资总和对部门进行唯一排名。但是,我在所有三个部门都获得了第一名。
希望有人能告诉我我哪里出错了!太感谢了! :)
我想要什么
+-----------+--------+-----+ |部门编号 | _c1 | rk | +-----------+--------+-----+ | 1000 | 24900 | 3 | | 1001 | 17400 | 1 | | 1002 | 20500 | 2 | +-----------+--------+-----+我得到了什么
+-----------+--------+-----+ |部门编号 | _c1 | rk | +-----------+--------+-----+ | 1000 | 24900 | 1 | | 1001 | 17400 | 1 | | 1002 | 20500 | 1 | +-----------+--------+-----+我正在使用的 HiveQL 语句
选择 部门编号,总和(工资), rank() OVER (PARTITION BY dept_num ORDER BY sum(salary)) as rk FROM employee_contract 按部门编号分组;我的数据集
迈克尔|1000|100|5000|满|2014-01-29 将|1000|101|4000|满|2013-10-02 将|1000|101|4000|部分|2014-10-02 史蒂文|1000|102|6400|零件|2012-11-03 露西|1000|103|5500|满|2010-01-03 百合|1001|104|5000|部分|2014-11-29 杰斯|1001|105|6000|零件|2014-12-02 迈克|1001|106|6400|零件|2013-11-03 卫|1002|107|7000|零件|2010-04-03 云|1002|108|5500|满|2014-01-29 理查德|1002|109|8000|满|2013-09-01【问题讨论】:
-
如果您将
salary的 SUM() 更改为通过子查询计算,它是否按预期工作?还是一样的结果?
标签: hive