题解 | 最长连续登录天数

最长连续登录天数

https://www.nowcoder.com/practice/cb8bc687046e4d32ad38de62c48ad79b

思路:

  1. 对登录记录按照天数去重,筛选时间
  2. 计算日期排名差,后续依次进行分组
  3. 分组后,最大值即为连续登录最多天的
with user_login as (
    select distinct user_id, fdate
    from tb_dau
    where fdate between '2023-01-01' and '2023-01-31'
)
, user_rank as (
    select user_id
           , fdate
           , row_number() over(partition by user_id order by fdate) as rn
           , date_sub(fdate, interval row_number() over(partition by user_id order by fdate) day) as grp_key
    from user_login
)
, consec_day as (
    select user_id
           , count(*) as consec_days
    from user_rank
    group by user_id, grp_key
)

select user_id, max(consec_days) as max_consec_days
from consec_day
group by user_id

全部评论

相关推荐

牛至超人:把哈工大,再加大加粗,看见闪闪发光的哈工大字样,面试官直接流口水
投递字节跳动等公司6个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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