题解 | #2021年11月每天新用户的次日留存率#

2021年11月每天新用户的次日留存率

https://www.nowcoder.com/practice/1fc0e75f07434ef5ba4f1fb2aa83a450

select
    t1.min_date as dt,
    round(sum(if(t2.dt is null,0,1))/count(t1.uid),2) as uv_left_rate
from
    -- 第一步:找出新用户表
    (
        select
            uid,
            date (min(in_time)) as min_date
        from tb_user_log
        group by uid
    ) t1
    -- 第二步,新用户表和用户活跃表进行连接,限制左表日期小于右表日期
    -- 计算活跃表时,记得把进入时间和退出时间所在日期都计算上
    left join (
        select
            uid,
            date (in_time) dt
        from tb_user_log
        union
        select
            uid,
            date (out_time) dt
        from tb_user_log
    ) t2 on t1.uid = t2.uid
    and datediff (t2.dt, t1.min_date) = 1
where t1.min_date between '2021-11-01' and '2021-11-30'
group by t1.min_date
order by t1.min_date

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

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