题解 | 最长连续登录天数

最长连续登录天数

https://www.nowcoder.com/practice/cb8bc687046e4d32ad38de62c48ad79b

with tt1 as(
    select
    fdate,
    user_id,
    row_number() over (PARTITION BY user_id order by fdate) as rn
		FROM
		tb_dau
		),
tt2 as(
	select
	fdate,
	user_id,
	DATE_SUB(fdate,INTERVAL rn DAY) as grp
	FROM
	tt1)
select 
user_id,
MAX(consec_days) as max_consec_days
from(
select
tt2.user_id,
count(*) as consec_days
from tt2
group by user_id,grp) AS conse
group by user_id

①排序和编号:窗口函数row_number(),对每个用户的登录日期进行排序,并为每个日期分配一个序号

②识别连续序列:DATE_SUB(fdate, INTERVAL rn DAY) AS grp,通过日期与序号的运算,将连续日期映射到同一个分组标识(grp),从而实现对连续序列的精准分组。

③计算连续天数:配合GROUP BY计算最长连续天数

全部评论

相关推荐

03-17 23:54
黑龙江大学 Java
来个白菜也好啊qaq:可以的,大厂有的缺打手
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务