SQL_牛客网_SQL264_求每个登陆日期的次日留存率

牛客每个人最近的登录日期(五)

牛客每天有很多人登录,请你统计一下牛客每个日期新用户的次日留存率。

有一个登录(login)记录表,简况如下:

id user_id client_id date

1 2 1 2020-10-12

2 3 2 2020-10-12

3 1 2 2020-10-12

4 2 2 2020-10-13

5 1 2 2020-10-13

6 3 1 2020-10-14

7 4 1 2020-10-14

8 4 1 2020-10-15

第1行表示user_id为2的用户在2020-10-12使用了客户端id为1的设备登录了牛客网,因为是第1次登录,所以是新用户

......

第4行表示user_id为2的用户在2020-10-13使用了客户端id为2的设备登录了牛客网,因为是第2次登录,所以是老用户

......

最后1行表示user_id为4的用户在2020-10-15使用了客户端id为1的设备登录了牛客网,因为是第2次登录,所以是老用户

请你写出一个sql语句查询每个日期新用户的次日留存率,结果保留小数点后面3位数(3位之后的四舍五入),并且查询结果按照日期升序排序,上面的例子查询结果如下:

date p

2020-10-12 0.667

2020-10-13 0.000

2020-10-14 1.000

2020-10-15 0.000

查询结果表明:

2020-10-12登录了3个(user_id为2,3,1)新用户,2020-10-13,只有2个(id为2,1)登录,故2020-10-12新用户次日留存率为2/3=0.667;

2020-10-13没有新用户登录,输出0.000;

2020-10-14登录了1个(user_id为4)新用户,2020-10-15,user_id为4的用户登录,故2020-10-14新用户次日留存率为1/1=1.000;

2020-10-15没有新用户登录,输出0.000;

(注意:sqlite里查找某一天的后一天的用法是:date(yyyy-mm-dd, '+1 day'),sqlite里1/2得到的不是0.5,得到的是0,只有1*1.0/2才会得到0.5)

题目解法

1.构建新用户临时表B

2.判断原表中是否存在与新用户临时表B,datediff()计算日期差值为1的记录,如果有则为新用户次日留存。

复制代码
with t1 as (
    select user_id, min(date) min_date
    from login
    group by user_id
)
select 
    date,
    round(if(P,P,0),3) P 
from(
    select l1.date 'date', round(sum(if((l1.user_id,l1.date) in (select * from t1) and l2.user_id,1,0))/sum(if((l1.user_id,l1.date) in (select * from t1),1,0)),3) P
    from login l1 left join login l2
        on l1.user_id=l2.user_id and datediff(l2.date,l1.date)=1
    group by l1.date
    order by l1.date
)t2
相关推荐
AI极客菌11 小时前
AI绘画工具中,为什么专业玩家爱用Stable Diffusion,普通玩家却喜欢Midjourney?
大数据·人工智能·ai·ai作画·stable diffusion·aigc·midjourney
腾视科技AI11 小时前
腾视科技大模型一体机解决方案:低成本私有化落地,重塑行业智能应用新格局
大数据·人工智能·科技·ai·边缘计算·算力·ai算力
金融支付架构实战指南12 小时前
支付系统 ES 实战案例:从索引创建到真实业务查询
大数据·elasticsearch·搜索引擎·支付
百胜软件@百胜软件13 小时前
从“数据孤岛”到“智利标杆”:百胜E3全渠道中台助力“名创优品”Newtree实现一体化智变
大数据·人工智能·零售数字化·数智中台·珠宝行业
lizhihai_9913 小时前
股市学习心得-A股服务器/算力服务器龙头
大数据·运维·服务器·人工智能·科技·学习
AllData公司负责人15 小时前
大模型赋能AllData数据中台,系列升级|通过联合智谱大模型与BiSheng开源项目,建设企业大模型应用开发平台,支持知识库向量检索!
大数据·数据结构·数据库·算法·大模型·向量数据库·智谱ai
Antom全球收单15 小时前
面对多市场、多币种、多支付方式,Antom如何帮助企业搭建全球支付平台
大数据
数智化管理手记15 小时前
标准作业越推越虚?重塑认知、规避误区,破解精益落地形式主义
大数据·网络·精益工程
一只鹿鹿鹿15 小时前
网络安全评估方案
java·大数据·运维·物联网·web安全
人工智能培训16 小时前
打造行业知识图谱三步走
大数据·人工智能·机器学习·3d·知识图谱·agent