题解 | #浙大不同难度题目的正确率#

浙大不同难度题目的正确率

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

select
  qd.difficult_level,
  sum(if(qpd.result="right",1,0))/count(qpd.question_id) as correct_rate
  from
  user_profile as up
  inner join
  question_practice_detail as qpd
  on up.device_id = qpd.device_id
  inner join
  question_detail as qd
  on qpd.question_id = qd.question_id
  where 
  up.university = "浙江大学"
  group by qd.difficult_level
  order by correct_rate asc

开始连接表我都用了left join,结果最终测试不能通过,想了想原因,如果question_detail表为空或字段difficult_level有NULL的话,那么查出的结果可能就会有难度为NULL的行,这个和答案不符,所以要用inner join内连接来查询,保留住两张表仅符合连接条件的行(注:left join和right join都会保留左表或右表的数据行,再去匹配保留符合连接条件的数据行,所以这里用内连接)

最后其实用left join左连接也可通过测试用例,在where查询条件再添加一个qd.difficult_level is not null即可。

如有不正确的地方,欢迎大家指正,谢谢。

全部评论

相关推荐

11-26 22:34
已编辑
重庆邮电大学 Java
快手 客户端开发 (n+5)k*16 公积金12
牛客895077908号:佬 什么双非硕啊
点赞 评论 收藏
分享
牛客101244697号:这个衣服和发型不去投偶像练习生?
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务