题解 | #浙大不同难度题目的正确率#
浙大不同难度题目的正确率
https://www.nowcoder.com/practice/d8a4f7b1ded04948b5435a45f03ead8c
SELECT
difficult_level,
-- count(if(result = 'right',result,null)) as right_cnt, 统计正确的数量
-- COUNT(IF(result = 'wrong',result,NULL)) AS wrong_cnt, 统计错误的数量
FORMAT (
COUNT(IF (result = 'right', result, NULL)) / (
COUNT(IF (result = 'right', result, NULL)) + COUNT(IF (result = 'wrong', result, NULL))
),
4
) AS correct_rate
FROM
user_profile,
question_practice_detail,
question_detail
WHERE
user_profile.device_id = question_practice_detail.device_id
AND question_practice_detail.question_id = question_detail.question_id
AND university = '浙江大学'
GROUP BY
difficult_level
ORDER BY
correct_rate
题解思路:
1.首先将3个表连接,3张表两个条件,同时过滤出浙江大学记录;(外连接/普通连接都行,因为没做题的学生不影响正确率,这里直接使用普通连接)
2.只显示有用的两列,这时可以清楚的看到各难度题目的result情况
3.根据上面结果,按题目难度(group by '难度'),分别统计出各难度的正确和错误的次数
4.现在可以计算出正确率:正确数 / (正确数+错误数)
5.最后不要忘记使用order by 子句对结果进行排序,按正确率排序。


查看20道真题和解析