题解 | 次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

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

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