题解 | #每个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
;

全部评论

相关推荐

都送什么礼物吗?如果送的话,价格大概都是多少?辛苦大家给个参考啦!
牛客73617529...:要送就送那种没必要买又很贵的,假设一个打瓦的显示屏 鼠标 键盘都很贵,你送这些突出不了价值,直接送一个很贵的鼠标垫包记住你的。
点赞 评论 收藏
分享
DKS233:(1)专业技能:Java8也太旧了,最少也要了解到JDK17吧,可以参考现在SpringBoot支持的Java最低版本,熟悉mysql基本理论具体指啥,是锁这种具体原理还是分库分表这些业务场景,spring这些专业词汇,大小写要写对(全篇简历都有这个问题,显得不严谨),熟悉使用框架进行业务开发就别写了,如果要写,起码要写到框架原理部分吧,比如aop,启动原理什么的,springcloud具体指哪些模块呢,写清楚,网关还是鉴权还是什么,“改造”没必要写吧,你直接说用springcloud开发的不就行了(2)项目经历:首先格式就有大问题,时间怎么能换行呢,调整一下,响应速度那个,如果指的是将部分数据从其他数据库转到redis的提升就别写了,因为这个不算难点,redis可以写写分布式这些,比如容灾怎么实现的,数据库同步怎么做的
点赞 评论 收藏
分享
07-21 12:41
已编辑
门头沟学院 Java
steelhead:不是你的问题,这是社会的问题。
点赞 评论 收藏
分享
07-24 11:26
门头沟学院 Java
东子我爱你推进的还是很快的但是是白菜价不过有个保底心里踏实了很多
想回家的秋招侠在考古:京东方不是京东噢,师兄当时看都不看一眼这个offer,很拉垮
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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