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

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

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

SELECT user_grade, ROUND(COUNT(uid) / MAX(user_count), 2)  ratio
FROM (
    SELECT uid, user_count,
        (CASE 
            WHEN leave_day >= 30 THEN '流失用户'
            WHEN leave_day >= 7 THEN '沉睡用户'
            WHEN come_day < 7 THEN '新晋用户'
            ELSE '忠实用户'
        END) AS user_grade
    FROM (
        SELECT uid, user_count,
            TIMESTAMPDIFF(day, max_out, td)  leave_day,
            TIMESTAMPDIFF(day, min_in, td)  come_day
        FROM (
            SELECT uid,
                MAX(DATE(out_time))  max_out,
                MIN(DATE(in_time))  min_in
            FROM tb_user_log
            GROUP BY uid
        ) AS in_out
        LEFT JOIN (
            SELECT MAX(DATE(out_time))  td,
                COUNT(DISTINCT uid)  user_count
            FROM tb_user_log
        ) AS td_count
        ON 1=1
    )  user_info
)  grade
GROUP BY user_grade
ORDER BY ratio DESC;

活跃间隔=当前时间-最新的登出时间;

新晋用户(近七日新增)=当前时间-第一次登入时间<7

全部评论

相关推荐

绝迹的星:前端和后端写两份简历, 如果想干全栈就直接写求职意向为全栈工程师
点赞 评论 收藏
分享
07-02 10:39
门头沟学院 Java
Steven267:说点真实的,都要秋招了,还没有实习,早干嘛去了,本来学历就差,现在知道急了,而且你这个简历完全可以写成一页,劣势太大了,建议转测试
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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