hive实操一(最大单月访问次数和用户月累计访问次数)

编写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

每个用户截止到每月为止的最大单月访问次数和累计到该月的总访问次数,结果数据格式如下:
hive实操一(最大单月访问次数和用户月累计访问次数)_第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
;

解析:
第一步:根据用户和月份分组,求出每个用户每月的访问次数
第二步:然后再第一步的基础上,使用窗口函数,根据用户分组,日期排序,求出最大值和累加值

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