题解 | #统计每个学校的答过题的用户的平均答题数#
统计每个学校的答过题的用户的平均答题数
https://www.nowcoder.com/practice/88aa923a9a674253b861a8fa56bac8e5
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)包含了未答题的用户。