题解 | #牛客每个人最近的登录日期(三)#

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

https://www.nowcoder.com/practice/16d41af206cd4066a06a3a0aa585ad3d

with a as(
    select user_id
    ,min(date) as reg_date
    from login
    group by user_id
)

select 
round(count(distinct case when datediff(b.date,a.reg_date)=1 then b.user_id else NULL end)/count(distinct a.user_id),3) as p
from a left join login b on a.user_id=b.user_id

1、注意输出形式,保留3位小数是round,如果要用百分比的形式,要改成concat(round(x,3)*100,'%')这样子

2、count(distinct case when datediff(b.date,a.reg_date)=1 then b.user_id else NULL end)/count(distinct a.user_id)用这种形式求留存率非常方便而且求几日改成几就ok了

全部评论

相关推荐

smile丶snow:感觉可以加一些ai相关的内容吧。现在面试很少能逃掉这些问题。羡慕里面感觉缺少一个项目背景。比如第二个项目后台管理系统…你为什么要做这个后台管理系统呢?是为了解决什么问题。比如你管理一个商品列表的增加减少。需要一个背景吧。哦或者说你第一个电子书那个是c端的,你肯定需要一个管理系统吧,那就是第二个后台管理系统,但这两个难道不应该是一个项目吗?可以稍微包装一下,最起码让人看着不是玩具项目。个人观点。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
正在热议
更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务