select difficult_level,avg(if(result='right',1,0)) as correct_rate from
(select up.device_id,university,answer_cnt,result,difficult_level 
from user_profile up left join question_practice_detail qpd on up.device_id = qpd.device_id left join question_detail qd on qpd.question_id = qd.question_id
where university = '浙江大学') a where result is not null
group by difficult_level
order by correct_rate;

之前有看过大佬做概率的方法,感觉很好用,这不就学到了。最开始一直错还以为有问题,后面发现是没有去排序,晕死