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

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

https://www.nowcoder.com/practice/ea0c56cd700344b590182aad03cc61b8

select cc.`date`,round(if(tt.p is null , 0.000,p),3) xx from (
SELECT 
    b.date,
    count(login.user_id)/sum(if(b.user_id is not null ,1,0)) p
FROM (
    SELECT *
    FROM (
        SELECT
            *,
            ROW_NUMBER() OVER (
                PARTITION BY user_id
                ORDER BY `date`
            ) as rank_nu
        FROM login
    ) a
    WHERE a.rank_nu = 1
) b 
    left join login
    ON b.user_id = login.user_id
    AND b.date = DATE_SUB(login.date, INTERVAL 1 DAY)
group by 
    b.date
) tt right join (
    select ee.`date` from login ee group by ee.`date` order by ee.`date` ) cc on cc.`date` = tt.`date`

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

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