题解|15. 微博历史签到中最大连续签到天数

微博历史签到中最大连续签到天数

明确题意:

计算每个用户历史签到中最大连续签到天数

问题拆解:

  • 对每个用户筛选签到了的记录按顺序编号。知识点:筛选签到记录where;按顺序编号row_number() over(partition by user_id order by sign_date)
  • 计算每个用户每次连续的签到天数。知识点:按用户ID、签到日期减去序号(即本次连续签到起始日期)分组group by;统计连续签到天数count();
  • 统计每个用户最大连续签到天数

代码实现:

select user_id, max(continuous_days) as max_continuous_days
from (
    select user_id, count(*) as continuous_days
    from (
        select user_id, sign_date,
            row_number() over(partition by user_id order by sign_date) as rn
        from user_sign_d
        where if_sign=1
    ) as t_sign_date_rn
    group by user_id, DATE_ADD(sign_date, INTERVAL -rn day)
) as t_continuous_days
group by user_id
全部评论

相关推荐

04-21 11:22
已编辑
中华女子学院 UE4
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务