题解 | 最长连续登录天数(开窗+日期相减函数)

最长连续登录天数

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


# max(count(*)) max_consec_days,错误,聚合函数不可以嵌套聚合函数

# 2023年1月1日-2023年1月31日用户最长的连续登录天数
# 输出:
# user_id|max_consec_days
# 10000|2
# 说明:
# id为10000的用户在1月1日及1月2日连续登录2日,1月4日登录1日,故最长连续登录天数为2日
select user_id
,max(times) as max_consec_days
from(
select user_id
,count(*) as times
from(
select user_id
# 下面两者区别是,前者只能算月内,不能跨月,而后者用日期相减可以跨月跨年。推荐后者。
# ,day(fdate)-row_number() over(partition by user_id order by fdate) as a
 ,date_add(fdate,interval -row_number() over(partition by user_id order by fdate) day) a
from tb_dau t
where fdate like "2023-01%"
) as t1
group by user_id,a
) as t2
group by user_id;














全部评论

相关推荐

2025-12-31 18:42
复旦大学 Java
点赞 评论 收藏
分享
牛马人的牛马人生:一开始看成了网吧
点赞 评论 收藏
分享
2025-11-07 15:41
暨南大学 C++
用微笑面对困难:我面试时候,就说了句”不愧是徐波的兵“他就破房了说是
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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