题解 | #浙大不同难度题目的正确率#
浙大不同难度题目的正确率
https://www.nowcoder.com/practice/d8a4f7b1ded04948b5435a45f03ead8c
审题可知以下条件
1.浙江大学用户,即 user_profile.university='浙江大学';
2.不同难度题目的正确率,需要先 join question_practice_detail 表和 question_detail 表,得到答过题目的难度情况;
3.最后 join 1的结果和2的结果,题目难度分组,聚合不同难度的题目数,以及答对题目数,相除即得到正确率;
考察
1.各种 join 的用法;
2.case when 和聚合函数一起使用的情况
完整代码
-- 1.浙江大学用户
with us as
(
select id,
device_id,
university
from user_profile
where university='浙江大学'
),
-- 2.答题明细
que as
(
select qpd.*,
qd.difficult_level
from question_practice_detail as qpd left join question_detail as qd
on qpd.question_id=qd.question_id
)
select que.difficult_level,
round(sum(case when que.result='right' then 1 else 0 end)/count(que.question_id),4) as correct_rate
from que inner join us
on que.device_id=us.device_id
group by que.difficult_level
order by correct_rate asc#SQL面试#