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

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

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;

全部评论

相关推荐

01-19 15:14
已编辑
延安大学 C++
累死的一条狗:我说白了这种玩意你直接点举报就完事了在给他挂出来
找工作以来,你最看不惯_...
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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