题解 | #SELECT 中判断的引用#

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

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

  • 本题的重点在于 活跃天数的计算(由题目练习和试卷作答两种组成),而且无论是总活跃月数和活跃天数都会用到 “2021-09-01”这种日期 因此第一步先进行 日期 + 标签的制表,然后进行嵌套使用
  • 然后在SELECT 中使用判断语句 case when ..then ...end/if (条件,正确,错误)
  • 易错点: 审题时疏忽,每个6/7级用户 当然在最后应是以 用户表为主--不然会缺失不活跃用户;
SELECT ui.uid, 
       COUNT(DISTINCT date_format(act_time,'%Y%m')) as act_month_total,
       COUNT(DISTINCT case when year(act_time)='2021' then act_time end) as act_day_2021,
       COUNT(DISTINCT case when year(act_time)='2021' and tag="exam" then act_time end) as act_day_2021_exam,
       COUNT(DISTINCT case when year(act_time)='2021' and tag="question" then act_time end) as act_day_2021_question
FROM
(
SELECT uid,DATE(start_time) as act_time,'exam' as tag
        FROM exam_record er
        UNION ALL
        SELECT uid,DATE(submit_time) as act_time,'question' as tag
        FROM practice_record pr
) a RIGHT JOIN user_info ui
on a.uid = ui.uid
WHERE ui.level in(6,7)
GROUP BY ui.uid
ORDER BY act_month_total DESC, act_day_2021 DESC
全部评论

相关推荐

神哥不得了:神哥来啦~1.建议不要包装,很容易问穿2.没日常也能找到暑期3.简历模板换一下,字体和版式看着好难受,而且最好压缩到一页,技术的倒数第2和3重复啦,项目建议换两个高质量的上去,如果时间够的话,八股就把高频top50的题目多巩固几遍,吃透,注意不要找假高频,这样绝对能找到暑期
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务