题解 | 最长连续登录天数
最长连续登录天数
https://www.nowcoder.com/practice/cb8bc687046e4d32ad38de62c48ad79b
思路:
1.进行数据去重,同一用户同一天的登录记录保留一条。
2.计算连续登录天数:row_number开窗函数开出行号,使用日期减行号的方式,若为连续登录则结果相同。使用count统计出连续登录天数。
3.使用max求出最大连续登录天数。
select
user_id,
max(consec_days) max_consec_days
from
(select
user_id,
count(*) consec_days
from
(select
user_id,
fdate,
date_add(fdate, interval -row_number() over(partition by user_id order by fdate) day) as datef
from
(select
fdate,
user_id
from tb_dau
group by fdate,user_id)t
)t1
group by user_id, datef
)t2
group by user_id
查看10道真题和解析