题解 | 统计活跃间隔对用户分级结果

统计活跃间隔对用户分级结果

https://www.nowcoder.com/practice/6765b4a4f260455bae513a60b6eed0af

WITH t1 AS (
    SELECT *
    FROM (SELECT uid,MIN(DATE(in_time)) AS first_in_time,
           MAX(DATE(out_time)) AS last_out_time
    FROM tb_user_log l1 
    GROUP BY uid ) AS f1 
    LEFT JOIN (
        SELECT MAX(DATE(out_time)) AS current_dt,
               COUNT(DISTINCT uid) AS uid_cnt
        FROM tb_user_log
    ) AS f2 ON 1
),
t2 AS (
    SELECT uid,uid_cnt,
           TIMESTAMPDIFF(DAY,first_in_time,current_dt) AS first_diff,
           TIMESTAMPDIFF(DAY,last_out_time,current_dt) AS 
           last_diff
    FROM t1 
),
t3 AS (
    SELECT uid,uid_cnt,
           CASE WHEN first_diff<7 THEN '新晋用户'
                WHEN last_diff>=7 AND last_diff<30 THEN '沉睡用户'
                WHEN last_diff>=30 THEN '流失用户'
                ELSE '忠实用户'
                END AS use_grade
    FROM t2 
)
SELECT use_grade,ROUND(COUNT(DISTINCT uid)/MAX(uid_cnt),2) AS ratio
FROM t3 
GROUP BY use_grade
ORDER BY ratio DESC

全部评论

相关推荐

03-29 18:59
运城学院 Java
程序员小白条:咱们要对自己的简历和学历有清晰的认知,不要动不动就大厂了....都26届了,没实习还想着大厂,唉
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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