题解 | #统计复旦用户8月练题情况# 个人笔记

统计复旦用户8月练题情况

https://www.nowcoder.com/practice/53235096538a456b9220fce120c062b3

这道题主要在对于在8月份没有练习过的用户,答题数结果返回0.

即:复旦大学所有用户8月的作答情况,包含没有作答过的

除了使用left join 对两个表的数据进行链接,还需要考虑执行过程中 university = '复旦大学' MONTH(date)=8 的先后情况

即:需要考虑复旦大学的学生在8月份刷题数为null值的情况。

根据解题区大佬笔记有以下几种解法:

1 b表连上a表,保留a表中的所有值,b表中保留8月份的数据,其余全为null值

2 筛选出复旦大学的学生后8月份的答题情况需要加入空值的存在。MONTH(t2.date)=8 OR t2.date IS NULL 

  1. SELECT t1.device_id, t1.university, 
  2. count(t2.question_id) AS question_cnt, 
  3. sum(
  4. case
  5. when t2.result = 'right' then 1
  6. ELSE 0
  7. end
  8. AS right_question_cnt
  9. FROM user_profile AS t1
  10. LEFT JOIN question_practice_detail AS t2
  11. ON t1.device_id = t2.device_id
  12. WHERE t1.university = '复旦大学' AND ((MONTH(t2.date)=8 OR t2.date IS NULL ))
  13. GROUP BY device_id

第一种是把除了8月的值,其他月份全变成null值,第二种是筛选出8月的值和null值。

SQL解题笔记 文章被收录于专栏

记录解题过程中遇到的问题、出现的错误以及掌握不牢固的知识点

全部评论

相关推荐

菜菜咪:1. 可以使用简历网站的模版,美观度会更好一点 2. 邮箱可以重新申请一个,或者用qq邮箱的别名,部分hr可能会不喜欢数字邮箱 3. 项目经历最好分点描述,类似的项目很多,可以参考一下别人怎么写的 4. 自我评价可加可不加,技术岗更看重技术。最后,加油,优秀士兵
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务