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

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

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

# 计算次日留存率 
# 去重
with t1 as (
    select
        distinct user_id,
        date,
        row_number() over (partition by user_id order by date asc) as ranking
    from
        login
),
# 筛选出新登录用户的数据 (时间最早的前两个)
t2 as (
    select
        user_id,
        date
    from
        t1
    where
        ranking <= 2
),

# 加入次日的登录记录
t3 as (
    select
        user_id,
        date,
        lead(date ,1 ,0) over (partition by user_id order by date asc) as next_date
    from
        t2
)
# 计算留存率
select 
    round(sum(if(date_sub(next_date, interval 1 day) = date, 1, 0)) / count(distinct user_id), 3) as p
from    
    t3;


全部评论

相关推荐

能干的三文鱼刷了10...:公司可能有弄嵌入式需要会画pcb的需求,而且pcb能快速直观看出一个人某方面的实力。看看是否有面试资格。问你问题也能ai出来,pcb这东西能作假概率不高
点赞 评论 收藏
分享
06-26 15:33
青岛工学院 Java
积极的秋田犬要冲国企:他现在邀请我明天面试
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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