select
    university, 
    qd.difficult_level,
    count(qpd.question_id) / count(distinct qpd.device_id) as avg_answer_cnt
    from question_detail qd 
    inner join question_practice_detail qpd on qd.question_id = qpd.question_id
    inner join user_profile up on qpd.device_id = up.device_id
    where up.university = '山东大学'
group by qd.difficult_level

很显然,因为是参加了答题的,即不需要没有答题的人,需要内连接inner join,逻辑线是, qd.question_id = qpd.question_id 到 qpd.device_id = up.device_id即题目id的相同连接两张表,用户id的相同连接另外两张表, 通过这两个逻辑连接起3个表,之后查找到想要的数据,并进行处理,其中 count(qpd.question_id) / count(distinct qpd.device_id) as avg_answer_cnt的去重是必须的,因为是总的做题数/总的人数, 最后告知条件是山东大学的用户