题解 | #牛客每个人最近的登录日期(五)#

牛客每个人最近的登录日期(五)

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

with new_usr as (
#其实用min就可以,这里用复杂了
    select date,user_id
    from(
        select *
        ,row_number() over (partition by user_id order by date) rn
        from login
    ) t
    where rn = 1
    order by date,user_id
)
, date as (
    select date
    from login 
    group by date
)

select distinct a.date
,round(if(t1.user_id is null,0,count(t2.user_id) over (partition by a.date)/count(t1.user_id) over (partition by a.date)),3)
from date a 
left join new_usr t1
on a.date = t1.date
left join (
# 有可能会有第二天登录多次的情况,去个重
    select date,user_id
    from login
    group by date,user_id
) t2
on t1.user_id = t2.user_id and datediff(t2.date,t1.date)=1

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

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