题解|16. 微博截止到当前每个用户已经连续签到的天数

微博截止到当前每个用户已经连续签到的天数

明确题意:

计算截止到6月13号每个用户已经连续签到的天数

问题拆解:

  • 筛选2021-6-13及之前签到了的记录。知识点:where
  • 对每个用户按签到日期倒序编号。知识点row_number() over(partition by user_id order by sign_date desc)
  • 筛选签到日期加上序号天后为2021-06-14的记录(即连续签到至2021-06-13的记录)。知识点:where、DATE_ADD
  • 统计每个用户的连续签到天数。知识点:按用户ID分组group by;对签到天数计数count

代码实现:

select user_id, count(*) as continuous_days
from (
    select user_id, sign_date,
        row_number() over(partition by user_id order by sign_date desc) as rn
    from user_sign_d
    where if_sign=1 and sign_date<="2021-6-13"
)as t_sign_date_rn
where DATE_ADD(sign_date, INTERVAL rn day)="2021-6-14"
group by user_id
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

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