@[TOC]Hive Sql 求每个用户连续登陆的最大天数
uid,dt
1,2019-08-01
1,2019-08-02
1,2019-08-03
1,2019-08-04
1,2019-08-06
1,2019-08-07
2,2019-08-01
2,2019-08-02
3,2019-08-01
3,2019-08-03
4,2019-07-28
4,2019-07-29
4,2019-08-01
4,2019-08-02
4,2019-08-03
4,2019-08-04
4,2019-08-05
求每个用户连续登陆的最大天数?输出结果应该如下所示:
uid cnt_days
1 4
2 2
3 1
4 5
create table user_login(
uid int,
dt date
)
row format delimited
fields terminated by ‘,’;
load data local inpath ‘/root/data/user_login.txt’ overwrite into table user_login;
第一步:(最重要)
思想是,用每一行的日期减去按顺序(升序)排列的1,2,3,4,5…(这些数字用排名函数配合开窗函数生成),
连续的日期相减之后的值是一样的(因为日期也是按照升序排列的),否则会不一样,出现断层。这些一样的数量就是连续登陆的天数
select uid, date_sub(dt,row_number() over(partition by