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

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

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

WITH T AS
(
    SELECT 
        T.*
        ,CASE WHEN l.`date` IS NOT NULL THEN 1 ELSE 0 END IND

    FROM (
        SELECT 
            *
            ,ROW_NUMBER() OVER(PARTITION BY user_id ORDER BY `date`) RN
        FROM login
        ) T
    left join (SELECT user_id,date FROM login) l
    on T.user_id = l.user_id and datediff(l.`date`, (CASE WHEN T.RN = 1 THEN T.`date` END)) = 1    
)
SELECT
    T.`date`
    # ,SUM(CASE WHEN T.RN = 1  THEN 1 ELSE 0 END) TOTAL
    # ,SUM(CASE WHEN T.IND = 1 THEN 1 ELSE 0 END) LC_CNT
    ,ROUND(IFNULL(SUM(CASE WHEN T.IND = 1 THEN 1 ELSE 0 END)/SUM(CASE WHEN T.RN = 1  THEN 1 ELSE 0 END),0),3)  P
FROM T
GROUP BY T.`date`
ORDER BY T.`date` 
;


全部评论

相关推荐

点赞 评论 收藏
转发
点赞 收藏 评论
分享
牛客网
牛客企业服务