1、题目要求
某游戏公司记录的用户每日登录数据,计算每个用户最大的连续登录天数,可以间隔一天。解释:如果一个用户在 1,3,5,6 登录游戏,则视为连续 6 天登录。
1002;2021-12-12
1001;2021-12-13
1001;2021-12-14
1001;2021-12-16
1002;2021-12-16
1001;2021-12-19
1002;2021-12-17
1001;2021-12-20
2、建表和加载数据
create table if not exists test3(
id int,
dt string
)row format delimited fields terminated by ";";
load data local inpath '/opt/test/t3.txt' overwrite into table test3;
3、分析
第1题我们做过连续问题,我们使用的等差数列的概念,即如果连续他们的间隔是相等的,但是本题是间隔连续,它不是完全连续,它允许间隔不一样,即在我设置的值内就算连续,比如
设置间隔小于三
10 11 13 15 16 前后两个数的间隔小于三,所以这五个数字连续
21 25 29 前后间隔25和21不小于三,25和29也不小于三,所以这三个数字不连续
方法一:等差法
1、先分组排序
1001 2021-12-13 1
1001 2021-12-1