查询每个日期新用户的次日留存率——新用户的次日留存率:第二天仍登录的新用户数/第一天的新用户登录总数

与上一题从联立后的用户ID突破

1、找到所有唯一的登录日期

#select distinct(date) from login

3、找到新用户第一次登录的日期

#select user_id,min(date) as date from login group by user_id;

4、将第一天登录的用户与login联立,筛选出第一天登录了,第二天也登录了。需要注意第一或第二天登录人数为0.

select a.date, ifnull(round(count(distinct c.user_id)*1.0 / count(b.user_id), 3),0) 
from (select distinct(date) as date from login) a 
left join (select user_id,min(date) as first_date from login group by user_id) b 
on a.date = b.first_date
left join login c 
on b.user_id = c.user_id 
and c.date = date_add(b.first_date, INTERVAL 1 day)
group by a.date;