select
  difficult_level,
  round(
    sum(if(qpd.result='right', 1, 0)) / count(qpd.question_id),
    4
  ) 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 qd.question_id = qpd.question_id
  and up.university = '浙江大学'
group by
  difficult_level
order by
  correct_rate

取三张表的交集,所以可以用inner join来连接三张表,关键就是判断答题正确率的写法,正确率==正确题目个数/答题总个数,可以通过if判断,if(expr,value1, value2)