思路:
- (第一天登录的新用户并且第二天也登录的用户)/(总用户)即为新登录用户的次日成功的留存率
总用户计算如下:
select count(distinct user_id) from login
- 找到每个用户第一天登陆的日子,和前面找最近登录的日子差不多,一个是max,一个是min,如下:
select user_id,min(date) from login group by user_id
- 找到所有的在第一天登录的新用户并且第二天也登录的用户,以及第二天的日期,如下:
select user_id,date(min(date),'+1 day') from login group by user_id
- 从这个里面找到所有的count(distinct user_id)除以总用户就可以得到结果,整个sql语句如下:
SELECT round( count( DISTINCT user_id )* 1.0 /( SELECT count( DISTINCT user_id ) FROM login ),
3
)
FROM
login
WHERE
( user_id, date ) IN ( SELECT user_id, date( min( date ), '+1 day' ) FROM login GROUP BY user_id )