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;

 

 

你可能感兴趣的:(大数据,MySQL,Hive)