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

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

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

-- 首先分享一下接替思路:留存率一般是用当天数据与次日数据进行关联,同时还要加上用户的关联条件。
-- 接下来就看表中关联次日表的情况,如果关联次日表为空,就说明次日该用户未登录
-- 同时考虑新用户怎么限定?:当日数据,根据用户进行分组,按照日期排序,开窗。
-- 于是,只需要在最后统计的时候限定为1的即为新用户。
select
    t1.date,
    round(ifnull(count(if(rn=1,t1.users_id,null)) *1.0/ count(if(rn=1,t1.user_id,null)),0), 3)
from
    (
        select
            t1.user_id,
            t1.date,
            t1.rn,
            t2.user_id as users_id
        from
            (select *,row_number() over(partition by user_id order by date) rn from login) t1
            left join 
                    login 
             t2 on DATE_ADD(t1.date, INTERVAL 1 DAY) = t2.date
            and t1.user_id = t2.user_id
    ) t1
group by
    t1.date
order by
    t1.date

#23届找工作求助阵地#
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

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