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