select qd.difficult_level,
round(ifnull((sum(case when qpd.result = 'right' then 1 else 0 end)/nullif(count(qd.question_id),0)),0),4) as correct_rate
from user_profile up
join question_practice_detail qpd
on up.device_id = qpd.device_id
left join question_detail qd
on qd.question_id = qpd.question_id
where up.university = '浙江大学'
group by qd.difficult_level
order by correct_rate asc;