SQL经典面试题--留存率问题

留存率
定义:某一天新增用户在之后的第n天仍然登录的比例,称为第n日留存率
例如:20220101新增100人,
20220102这100人中登录了60人,次日留存率为60%
20220103这100人中登录了40人,第2日留存率为40%

计算次日留存率,第2日留存率
用户t_user表(用户id,用户名user_name,注册时间register_time)
用户登录t_user_login (自增id,用户名uid,登录时间login_time)

法一:多表连接

#先计算20220101的次日留存与第二日留存
select date(tu.register_time),100*count(distinct t1.uid)/count(distinct tu.id) rr1,
100*count(distinct t2.uid)/count(distinct tu.id) rr2
from t_user tu 
left join t_user_login t1 on (t1.uid = tu.id and date(t1.login_time) = date(tu.register_time)+ interval '1' day)
left join t_user_login t2 on (t2.uid = tu.id and date(t2.login_time) = date(tu
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值