题解 | #最长连续登录天数#
最长连续登录天数
https://www.nowcoder.com/practice/cb8bc687046e4d32ad38de62c48ad79b
select user_id,max(consec_days) as max_consec_days from (select b.user_id, b.first_date, count(b.first_date) as consec_days from (select a.user_id, date_sub(fdate,interval a.rn day) as first_date from (select user_id, fdate, row_number()over(partition by user_id order by fdate) as rn from tb_dau)a )b group by b.user_id,b.first_date)c group by user_id
现有数据无法解题→需要去增加数据→找连续登录与非连续登录数据特征上的不同
连续登录天数间隔都是1,离初始天间隔是等差数列,1,2,3,4...,用登录时间减去用户按时间排序的序号天数,连续登录的一段时间会得到同一初始天,按初始天分组进行计数,找到其中最大的即可得到最大登录时间。