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

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

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

WITH total AS (
SELECT 
uid,
MAX(DATE(out_time)) AS dt,
DATE(MIN(in_time)) AS reg_date

FROM tb_user_log

GROUP BY uid)

SELECT
user_grade,
ROUND(COUNT(*)/(SELECT COUNT(DISTINCT uid) FROM tb_user_log), 2) AS radio

FROM(
    SELECT
    *,
    (SELECT DATE(MAX(in_time)) FROM tb_user_log) AS today,
    CASE WHEN DATEDIFF((SELECT today), dt) < 7 AND reg_date <> (SELECT today) AND DATEDIFF((SELECT today), reg_date) >= 7 THEN '忠实用户'
         WHEN DATEDIFF((SELECT today), reg_date) < 7 THEN '新晋用户'
         WHEN DATEDIFF((SELECT today), dt) >= 30 THEN '流失用户'
         ELSE '沉睡用户'
	      
    END AS user_grade

    FROM total) AS a 

GROUP BY user_grade

ORDER BY radio DESC

全部评论

相关推荐

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

创作者周榜

更多
牛客网
牛客企业服务