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

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

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

写的好复杂,看到评论区那些简单的代码,有点自闭了

我的脑子有点转不过弯来,为啥可以这么简单

唯一欣慰的是,至少写出来了

# 1、选出用户id 及 其首次登录时间
# 2、确定出 用户id及 首次登录次日
# 3、user_id和date都符合2的条件,则计算 第二日留存的人数
# 4、确定所有新用户人数
# 5、次日留存人数/新用户总人数

# 第五步
select round(sum(a.count_next)/sum(b.count_all),3) as p 
from (
# 第三步
select user_id,count(user_id) as count_next
from login
where (user_id,date) in 
(
    # 第二步
    select user_id,date_add(l.min_date,interval 1 day) as daytwo
    from 
    (
        # 第一步
        select 
                distinct user_id,
                min(date) as min_date
            from login
            group by user_id
        
    )l
)
group by user_id

)a 
right join
(
    # 第四步
    select user_id,count(distinct user_id) as count_all
    from login
    group by user_id

)b 
on a.user_id=b.user_id

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

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