题解 | #浙大不同难度题目的正确率#
浙大不同难度题目的正确率
http://www.nowcoder.com/practice/d8a4f7b1ded04948b5435a45f03ead8c
要求
浙江大学的用户在不同难度题目下答题的正确率情况
思路
- 浙江大学: univeristy = "浙江大学"
- 不同难度: group by difficult_level
- 正确率: sum(if(result = "right",1,0) / count(result)
- 这里要用到三张表的信息,所以我们需要用到两个JOIN 将三张表连接。
- 这里是要求根据准确率的升序排列而不是难度,不要写错了 (PS:这里如果用order by difficult_level,那么SQL 是默认根据A-Z 排列而不是EASY,MEDIUM,HARD 的顺序。)
实现
select qd.difficult_level, sum(if(qp.result = "right",1,0)) / count(qp.result) as correct_rate FROM
user_profile as up
right JOIN question_practice_detail as qp on up.device_id = qp.device_id
left JOIN question_detail as qd ON qp.question_id = qd.question_id
where up.university = "浙江大学"
group by qd.difficult_level
order by correct_rate