select
    d.difficult_level,
    avg(r1) correct_rate
from
    (
        select
            a.device_id,
            c.difficult_level,
            b.question_id,
            case
                when result = 'right' then 1
                else 0
            end r1
        from
            user_profile a
            left join question_practice_detail b on a.device_id = b.device_id
            join question_detail c on b.question_id = c.question_id
        where
            a.university = '浙江大学'
    ) d
group by
    d.difficult_level
order by
    correct_rate;