select difficult_level,
    avg(if(qpd.result='right', 1, 0)) as correct_rate
    #sum(if(qpd.result='right', 1, 0)) / count(qpd.question_id) as correct_rate
    #count(if(qpd.result='right', 1, null)) / count(qpd.question_id) as correct_rate
from user_profile as up

join question_practice_detail as qpd
on up.device_id=qpd.device_id

join question_detail as qd
on qpd.question_id=qd.question_id

where university='浙江大学'
group by difficult_level
#这样group by difficult_level having university='浙江大学'的话会编译错误出错,应当用下面的:
#group by university,difficult_level having university="浙江大学"
order by correct_rate