SQL68 牛客每个人最近的登录日期(三)
条件
有一个登录(login)记录表,简况如下:

要求
1、新登录用户次日成功的留存率,即第1天登陆之后,第2天再次登陆的概率
2、保存小数点后面3位(3位之后的四舍五入)
上面的例子查询结果如下:

解析
新登录用户次日成功的留存率 = 次日用户留存的数量 / 总用户
总用户的数量为
select count(distinct user_id) from login
次日用户留存的数量为用户第一天登录,且第二天还登录的用户数量
select count(user_id) from login where (user_id, date) in (select user_id, date_add(min(date), interval 1 day) from login group by user_id);
联立可得
select round(1.0 * count(distinct l1.user_id) / count(distinct l2.user_id), 3) from login as l1, login as l2 where (l1.user_id, l1.date) in (select user_id, date_add(min(date), interval 1 day) from login group by user_id);
PS:当天同一个用户可能不止登录一次,需要用distinct排除

浙公网安备 33010602011771号