题解 | #统计复旦用户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解题笔记 文章被收录于专栏

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

全部评论

相关推荐

点赞 评论 收藏
分享
06-27 18:45
中山大学 Ruby
25届应届毕业生,来广州2个礼拜了,找不到工作,绝望了,太难过了…
应届想染班味:9爷找不到工作只能说明,太摆了或者太挑了。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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