题解 | 计算用户的平均次日留存率

计算用户的平均次日留存率

https://www.nowcoder.com/practice/126083961ae0415fbde061d7ebbde453


--  注意同一个用户/设备每天可能有多次记录,需要先去重 
-- 平均次日留存率=每日使用后次日留存用户数/总用户数
    --  判断次日留存:用户使用日期+1也是用户使用日期
        -- 方法一:用户使用日期+1在用户活跃表里
        -- 方法二:用户使用日期的下一行(排序后)等于使用日期+1
-- 方法二: 窗口函数
select  
    round(
        count(case when dt_next=date_add(dt, interval 1 day) then 1 else null end) -- 计算次日留存用户:判断用户活跃日期的下一行是否也是用户活跃日期 
        /count(dt) -- 计算总用户数
    ,4) as avg_ret
from
( -- 用户活跃日期和下一行
    select 
            device_id
            , dt -- 用户活跃日期
            , lead(dt,1)over(partition by device_id order by dt) as dt_next -- 用户活跃日期的下一行
    from 
    (-- 去重用户和日期
        select 
            distinct device_id
            , date as dt
        from  question_practice_detail 
    ) t11
) t1   
  
        

全部评论

相关推荐

2025-12-29 20:37
已编辑
清华大学附属小学 Java
开始打牌offer啦:1.为什么要写这么多内容呀 2.什么叫做简历 3.什么样的内容可以写到简历上 4.项目可以包装,但是要有理有据呀,不能乱包装呀,比如 跨境能达到日均120万订单的在国内都是能叫的上名字的,而且这些工作也基本上不太会交给一个实习生去做 建议友友可以去网上或者找同学的简历看看,他们的简历是怎么写的,去找找上面的那四个问题的答案吧,然后要记住的是Java是服务于业务的,而不是服务于微服务或者技术的
最后再改一次简历
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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