如何计算蜂巢中的累积工资

时间:2014-11-23 02:19:08

标签: mysql sql hadoop hive

由于hive只支持来自cluase的子查询,例如select * from(子查询),并且也只支持equjoin,所以我们如何计算来自表格的累积工资 表员工的记录如下。

id     name       salary
e001  manish      10000
e002  amit         40000
e003  santosh     45000
e004  rohit       30000

所以输出应该如下

id       name           salary        cumsalary
e001     manish         10000          10000
e002     amit           40000          50000
e003     santosh        45000          95000
e004     rohit           30000         125000

我怎样才能在蜂巢中实现这个目标

2 个答案:

答案 0 :(得分:3)

Hive支持sum()分析函数,因此您应该可以执行以下操作:

select t1.* ,
sum(salary) over (order by id) cumsalary
from table t1

有关Hive的分析函数的详细信息,请参阅https://cwiki.apache.org/confluence/display/Hive/LanguageManual+WindowingAndAnalytics

答案 1 :(得分:1)

使用Correlated Sub-Query查找累积总和

 create table #temp(id varchar(10),    name  varchar(50),     salary int)
 insert #temp values 
('e001',  'manish',      10000),
('e002',  'amit   ',      40000),
('e003',  'santosh ',    45000),
('e004',  'rohit  ',     30000)

SELECT *,
       (SELECT Sum(salary)
        FROM   #temp t2
        WHERE  t2.id <= t.id) As cumsalary
FROM   #temp t