select 
    university,                        # 结果第一列
    difficult_level,                   # 结果第二列
    count(qpd.question_id) / count(distinct qpd.device_id) as avg_answer_cnt
from user_profile as up
right join question_practice_detail as qpd            # 先右联结
on up.device_id=qpd.device_id
left join question_detail as qd                       # 这里左右联结都可以
on qpd.question_id=qd.question_id
group by university,difficult_level

这里首先要将三个表给联结起来

  • 第一次联结:因为有用户没有答题,所以实际的答题记录以 question_practice_detail 为准,所以要右联结。
  • 第二次联结:这次是为了展示每个题目的难易程度,所以左右联结都可以。

之后对联结后的表进行 group by 筛选,首先按照学校进行分类,然后对答题的难易程度进行分类。

最后,筛选一下即可。

  • 第一列:university
  • 第二列:diffcult_level
  • 第三列:因为要计算平均值,所以 count(qpd.question_id) 统计总共的答题总数,count(distinct qpd.device_id) 统计答题的人数。