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

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

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

WITH t AS(SELECT
uid,
TIMESTAMPDIFF(DAY,MAX(in_time),(SELECT MAX(in_time) FROM tb_user_log)) AS '最后登录距今天数',
TIMESTAMPDIFF(DAY,MIN(in_time),(SELECT MAX(in_time) FROM tb_user_log)) AS '最早登录距今天数'
FROM tb_user_log
GROUP BY uid)

SELECT
CASE 
    WHEN 最早登录距今天数 < 7 THEN "新晋用户"
    WHEN 最后登录距今天数 >29 THEN "流失用户"
    WHEN 最后登录距今天数 >6 THEN "沉睡用户"
    ELSE "忠实用户"
    END AS user_grade,
ROUND(COUNT(*)/(SELECT COUNT(DISTINCT uid) FROM tb_user_log),2) AS ratio
FROM t
GROUP BY user_grade
ORDER BY ratio DESC







全部评论

相关推荐

点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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