新用户的次日留存率=(第一天登录的新用户并且第二天也登录)/(总用户)
1、先求总用户数
#select count(distinct user_id) from login
2、找到每个用户第一天登录的日子
#select user_id, min(date) from login group by user_id
3、找到第一天登录的新用户且第二天也登录了
#select user_id, DATE_ADD(min(date), interval 1 day) from login group by user_id
4、最后计算第二天也登录的新用户数量,除以总用户数就可得到次日留存率。
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_ADD(min(date), interval 1 day)
from login group by user_id);