Hive--筆試題01--窗口分析函數實現

有以下一份數據:

A,2015-01,5
A,2015-01,15
B,2015-01,5
A,2015-01,8
B,2015-01,25
A,2015-01,5
A,2015-02,4
A,2015-02,6
B,2015-02,10
B,2015-02,5
A,2015-03,16
A,2015-03,22
B,2015-03,23
B,2015-03,10
B,2015-03,11

數據的字段定義是:

name,month,pv

數據的字段意義是:

用戶,月份,訪問量

 

現在來看需求:

每個用戶截止到每月爲止的最大單月訪問次數和累計到該月的總訪問次數

 

結果如下:

用戶	月份		當月訪問次數	最大訪問次數	總訪問次數		
A       2015-01		33		33		33
A       2015-02		10		33		43
A       2015-03		38		38		81
B       2015-01		30		30		30
B       2015-02		15		30		45
B       2015-03		44		44		89

 

利用窗口分析函數實現:

select 
a.id, 
a.month, 
a.pv, 
sum(a.pv) over (partition by a.id order by a.month rows between unbounded preceding and current row) as sumpv, 
max(a.pv) over (partition by a.id order by a.month rows between unbounded preceding and current row) as maxpv 
from 
(select b.id as id, b.month as month, sum(b.pv) as pv from exercise1 b group by b.id, b.month) a;

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章