由于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
我怎样才能在蜂巢中实现这个目标
答案 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