题解 | #统计每个学校的答过题的用户的平均答题数#
统计每个学校的答过题的用户的平均答题数
http://www.nowcoder.com/practice/88aa923a9a674253b861a8fa56bac8e5
1.题目条件重点:每个学校、答过题的用户、平均答题数量情况。最后的结果要的是学校university和平均用户答题数avg_answer_cnt
方法一: ①首先每个学校可以德驰要通过group by university来分组 ②平均答题数=每个学校所有的答题数量/用户数 即count(q.queston_id)/count(distinct u.device_id) ③在user表中是所有的用户,不确定是否有答过题,所以答过题的用户,需要指定条件,两个表连接之后,要的是答题id非空的数据来计算所以where 字句的条件就是u.question_id is bull 整个就是: select university, (count(q.question_id)/count(distinct u.device_id)) avg_answer_cnt from user_profile u inner join question_practice_detail q on u.device_id=q.device_id where q.question_id is not null group by university
方法二: 如果平均数都是答题表中计算的,那么不需要考虑没有答题的人,因为没答题就不会上榜了 答案:
select university, (count(q.question_id)/count(distinct q.device_id)) avg_answer_cnt from user_profile u inner join question_practice_detail q on u.device_id=q.device_id group by university