题解 | 最长连续登录天数

最长连续登录天数

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

全部评论

相关推荐

04-21 16:05
已编辑
山西大学 Java
不吃压力👿:我和你简历差不多,好多看到28就不回复了,回复的基本是全栈或低代码
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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