查询每个日期新用户的次日留存率——新用户的次日留存率:第二天仍登录的新用户数/第一天的新用户登录总数
与上一题从联立后的用户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;