欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

牛客SQL练习第69题

程序员文章站 2022-06-07 11:37:51
...

题目描述

牛客每天有很多人登录,请你统计一下牛客新登录用户的次日成功的留存率,
有一个登录(login)记录表,简况如下:
牛客SQL练习第69题

第1行表示id为2的用户在2020-10-12使用了客户端id为1的设备第一次新登录了牛客网
。。。
第4行表示id为3的用户在2020-10-14使用了客户端id为2的设备登录了牛客网

请你写出一个sql语句查询新登录用户次日成功的留存率,即第1天登陆之后,第2天再次登陆的概率,保存小数点后面3位(3位之后的四舍五入),上面的例子查询结果如下:
牛客SQL练习第69题

查询结果表明:
id为2的用户在2020-10-12第一次新登录了,在2020-10-13又登录了,算是成功的留存
id为3的用户在2020-10-12第一次新登录了,在2020-10-13没登录了,算是失败的留存
固次日成功的留存率为 1/2=0.5
(sqlite里查找某一天的后一天的用法是:date(yyyy-mm-dd, ‘+1 day’),四舍五入的函数为round,sqlite 1/2得到的不是0.5,得到的是0,只有1*1.0/2才会得到0.5)

解答:

找出第一次登陆的日期,用date()得到第二天登陆的日期,就能得到第一次登陆第二天也登陆的用户。

select round(count(distinct l1.user_id)*1.0/(select count(distinct user_id)  from login),3)
from login l1, login l2
where l1.user_id = l2.user_id 
and l2.date = date(l1.date,'+1 day')
and l1.date = (select min(date) from login where user_id=l1.user_id)
相关标签: 牛客 sql