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

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

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

首先根据user_id分区,分区中根据日期降序,取rank排名第一的及是新用户的第一天登录,然后跟原表join内连接id和第一天日期的第二天相等作为条件就好,最后convert保留小数点。
SELECT CONVERT((SELECT COUNT(1)
                FROM (SELECT user_id, date
                      FROM (SELECT user_id, date, rank() over (PARTITION BY user_id ORDER BY date) r
                            FROM login) a
                      WHERE a.r = 1
                      GROUP BY user_id, date) b
                         INNER JOIN login
                WHERE b.user_id = login.user_id
                  AND login.date = date_add(b.date, INTERVAL 1 day)) /
               (SELECT COUNT(DISTINCT user_id) FROM login), DECIMAL(10, 3));



全部评论

相关推荐

评论
4
1
分享

创作者周榜

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