编写sql实现每个用户截止到每月为止的最大单月访问次数和累 计到该月的总访问次数
数据:
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,1
每个用户截止到每月为止的最大单月访问次数和累计到该月的总访问次数,结果数据格式如下:
所用SQL:
create table visits(
username string,
month string,
visits int
)
row format delimited
fields terminated by ','
lines terminated by '\n';
load data local inpath '/root/data/interview/data1' overwrite into table visits;
select
username,
month,
max(visits) over(distribute by username sort by month) maxvisit,
sum(visits) over(distribute by username sort by month) totalvisit
from(
select username,month,sum(visits) as visits
from visits
group by username,month
)t1
;
解析:
第一步:根据用户和月份分组,求出每个用户每月的访问次数
第二步:然后再第一步的基础上,使用窗口函数,根据用户分组,日期排序,求出最大值和累加值