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)
统计答题的人数。