select up.university, 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
group by up.university
order by up.university

这里平均每个用户答题数量是答题总数/答题人数,而不是除以该学校总人数。

因此选用inner join 来获取参与了答题的人和答题详情,而在链接后,对于多个答题详情可能是同一个用户的情况,需要使用distinct对device_id进行去重。

关联条件是device_id

根据学校再进行分组。

如果包含未答题的人数来求平均值的话,使用left join即可,即 即使用户未关联上,但count(question_id)不变,count(device_id)包含了未答题的用户。