select
    university,
    difficult_level,
    count(*) / count(distinct device_id) as avg_answer_cnt
from
    (
        select
            c.question_id,
            difficult_level,
            e.university,
            e.device_id
        from
            question_detail c
            inner join (
                select
                    a.device_id,
                    university,
                    b.question_id
                from
                    user_profile a
                    inner join (
                        select
                            device_id,
                            question_id
                        from
                            question_practice_detail
                    ) b on a.device_id = b.device_id
            ) e on c.question_id = e.question_id
    ) d
group by
    difficult_level,
    university
order by
    university;