题解 | 最长连续登录天数(开窗+日期相减函数)
最长连续登录天数
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;


