题解 | #浙大不同难度题目的正确率#
浙大不同难度题目的正确率
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即可。
如有不正确的地方,欢迎大家指正,谢谢。