题解 | #牛客每个人最近的登录日期(五)#
牛客每个人最近的登录日期(五)
http://www.nowcoder.com/practice/ea0c56cd700344b590182aad03cc61b8
查询每个日期新用户的次日留存率——新用户的次日留存率:第二天仍登录的新用户数/第一天的新用户登录总数
与上一题从联立后的用户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;
查看10道真题和解析