官方题解 | #微博每个用户历史中最大连续签到天数#

微博每个用户历史中最大连续签到天数

http://www.nowcoder.com/practice/4cc8d0eba65146b6a89181cecb59cc29

step1: 查找已签到的相关数据,按用户id进行分组,按签到日期排序后,对其依次编号;

step2: 将日期减去编号后得到dif,按照user_id及dif进行分组,统计个数即为每个用户连续签到的天数;

step3: 查找连续签到天数中的最大值;

step4: 按user_id排序输出。

SELECT t1.user_id, max(t1.max_continuous_days) as max_continuous_days

from(

select t.user_id, date_sub(t.sign_date, interval t.rn day) as dif, count(1) as max_continuous_days

from(

select user_id, sign_date, row_number() over(partition by user_id order by sign_date ) as rn

from user_sign_tb

where if_sign=1)t

group by t.user_id, dif)t1

group by t1.user_id

ORDER by t1.user_id;

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-11 11:24
大家还是用ai改吧,我心疼得要死,就当花钱买教训吧,人家直接拿完钱就跑路了
程序员小白条:简历修改700....神奇,又不是帮你面试,咋的,简历修改从双非变92了还是没实习变成有大厂实习了
点赞 评论 收藏
分享
06-26 15:33
青岛工学院 Java
积极的秋田犬要冲国企:他现在邀请我明天面试
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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