题解 | #最长连续登录天数#
最长连续登录天数
https://www.nowcoder.com/practice/cb8bc687046e4d32ad38de62c48ad79b
select user_id
,max(lianxu) as max_consec_days
from
(
select user_id
,count(date2) as lianxu
from
(
select t1.*,
date_sub(fdate,interval rnm day) as date2
from
( select *
,row_number() over(partition by user_id order by fdate) as rnm
from tb_dau
) as t1
) as t2
group by t2.user_id,date2
) t3
group by user_id
根据用户id分区,之后按照fdate升序排序,参考的评论区的大佬的题解,fdate - 排名 = date2 ,如果date2 相同,表示连续登录