select up.university, qd.difficult_level, count(qpd.question_id)/count(distinct up.device_id) avg_answer_cnt  from 
user_profile up 
inner join question_practice_detail qpd 
on up.device_id = qpd.device_id
inner join question_detail qd 
on qpd.question_id = qd.question_id
group by up.university, qd.difficult_level

多表查询需要进行连接操作,这里计算的人数基础是答过题的用户,因此user_info与答题详情通过device_id进行内连接。题目的难度通过question_id来关联,同样都采用inner join。

关联后我们可以先查询一下学校,device_id,question_id,难度。

接下来我们需要进行分组,要求是不同学校不同难度下的用户平均答题数量,因此需要对学校和难度进行分组,再计算总答题数和总人数,device_id统计时注意去重即可,/计算出平均值。