题解 | 次7日留存率

假设有个order表

三个字段:

order_id,

user_id,

date

  • 求20250101-20250107之间这7天的“次 7 日留存率” avg_ret_7
  • “次 7 日留存率”指的是一批新增用户在注册或首次使用的第 0 天(T日)之后,第 7 天(即 T + 7 )再次回归并使用产品的比例。(不是7天内回归)

select
    count(user2) / count(user1) as avg_ret_7
from
    (
        select distinct # 关键点:可能会有一个人在T+0有两条记录,在T+7也有两条记录,那么就会被重复统计,所以需要去重,并且是需要带着date1和date2的去重
            t1.user_id as user1,
            t1.date as date1,
            t2.user_id as user2,
            t2.date as date2
        from
            order t1
            left join order t2 on t1.user_id = t2.user_id
            and datediff(t2.date, t1.date) = 7
        order by
            t1.user_id,
            t1.date
    ) t

全部评论

相关推荐

开始之前满怀希望,终究还是希望多大,失望多大!6.4一面虽然是全场景拷打,没理解题意时面试官非常耐心讲解,面试体验非常好。1.美团Leaf号段如何避免重复发号,如何100台虚拟机怎么拿到不同的号段?2.Redis如何去做消息幂等?3.Redis如何存储不同接口下不同IP近10分钟内的访问次数?4.请求上亿次为了防止打爆Redis,不需要记录明细,只需要统计结果怎么做?5.Java中用Redis加锁,防止同一订单ID处理多次,请求达到集群中谁抢到锁谁处理怎么操作?6.5中一个节点拿到锁后然后出故障,导致锁未手动释放,怎么办?7.不用RabbitMQ怎么坐延迟任务?8.用mq去实现,但是不用RabbitMQ怎么做?9.Mybatis中#和¥的区别,哪个更安全?10.在Spring一个大事务中调用子事务(如日志统计),不随大事务的回滚而回滚,让它独立,怎么做?11.ArrayList是线程安全吗?如何改进使它变安全?12.如何判断两个List是否完全相等?13.try catch final处理异常,final执行了,但是exception没有记录,什么原因?14.TCP三次握手是什么?15.抓过TCP的包吗?会携带什么信息(服务端与客户端有哪些信息进行交互)?16.什么是类加载机制?6.5二面问的相对简单,没有记录(本想等OC再发,不过已经凉了)兄弟们,大一找实习真的太难了,不管怎么说明自己的稳定性,面试官终究还是不信的
查看16道真题和解析 Java求职圈
点赞 评论 收藏
分享
06-11 17:39
门头沟学院 Java
小呆呆的大鼻涕:卧槽,用户彻底怒了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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