题解 | #每个6/7级用户活跃情况#

每个6/7级用户活跃情况

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

# 6/7级用户
# 总活跃月份数,2021年活跃天数,2021年试卷作答活跃天数,2021年答题活跃天数
# 总活跃月份数,2021年活跃天数降序排序
# 注意user_info表联结后再进行聚合,否则符合条件的部份用户数据将为NULL

SELECT u.uid, 
    COUNT( DISTINCT a.active_month) AS act_month_total,
    COUNT(DISTINCT CASE 
            WHEN YEAR(a.active_day)= '2021' THEN a.active_day END
            ) AS act_days_2021,
    COUNT(DISTINCT CASE 
            WHEN YEAR(a.active_day)= '2021'  AND a.category='试卷作答' THEN a.active_day END
            ) AS act_days_2021_exam,
    COUNT(DISTINCT CASE 
            WHEN YEAR(a.active_day)= '2021'  AND a.category='题目练习' THEN a.active_day END
            ) AS act_days_2021_question
FROM user_info AS u
LEFT JOIN (
    (SELECT uid, 
        DATE_FORMAT(start_time,'%Y%m' ) AS active_month,
        DATE_FORMAT(start_time,'%Y%m%d' ) AS active_day,
        '试卷作答' AS category
    FROM exam_record)
    UNION ALL
    (SELECT uid, 
        DATE_FORMAT(submit_time,'%Y%m' ) AS active_month,
        DATE_FORMAT(submit_time,'%Y%m%d' ) AS active_day,
        '题目练习' AS category
    FROM practice_record)
    ) AS a 
ON u.uid=a.uid
WHERE u.level >= 6
GROUP BY u.uid
ORDER BY act_month_total DESC, act_days_2021 DESC
;

全部评论

相关推荐

二十岁的编程男神王大...:读博吧兄弟,你这绩点太好了,何必转码,另外哈哈哈真见到有括号标出来985的,这个不标注也知道吧
点赞 评论 收藏
分享
在打卡的大老虎很想潜...:你在找实习,没啥实习经历,技术栈放前面,项目多就分两页写,太紧凑了,项目你最多写两个,讲清楚就行,项目背景。用到的技术栈、亮点、难点如何解决,人工智能进面太难了,需求少。你可以加最新大模型的东西
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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