2014-11-23 4 views
1

하이브는 select * from (subquery)와 같은 cluase에서만 서브 쿼리를 지원하며 또한 equjoin 만 지원하므로 테이블 직원의 누적 급여는 테이블 직원이 아래와 같이 계산합니다.하이브에서 누적 급여를 계산하는 방법

 
id  name  salary 
e001 manish  10000 
e002 amit   40000 
e003 santosh  45000 
e004 rohit  30000 
당신이 follwing을 할 수 있어야하므로

그렇게 출력이

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

가 어떻게 하이브

답변

3

하이브에서이 achive 수 아래처럼해야한다는 sum() 분석 기능을 지원합니다

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

하이브의 분석 함수에 대한 자세한 내용은을 참조하십시오.

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 
관련 문제