有以下一份數據:
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;