select a.date, ifnull(round(count(l.user_id)/count(b.user_id),3),0.0) from (select distinct date from login ) a left join (select user_id,min(date) date from login group by user_id) b on a.date=b.date left join login l on date_add(b.date,interval 1 day)=l.date and b.user_id=l.user_id group by a.date order by a.date
- 找到所有日期表a
- 找到所有用户以及第一天登陆日期
- 连接a b,以a为连接基准
- 继续连接 login,找到次日留存的情况
- 使用ifnull控制输出的概率

京公网安备 11010502036488号