题解 | #统计每个学校的答过题的用户的平均答题数#
统计每个学校的答过题的用户的平均答题数
http://www.nowcoder.com/practice/88aa923a9a674253b861a8fa56bac8e5
1.目标:查询每个学校答过题的用户平均答题数量情况
2.每个学校--->按学校分组
group by t1.university
3.平均答题数量、学校在两个表中--->两表连接,这里就是简单的内连接
user_profile t1 join question_practice_detail t2 on t1.device_id = t2.device_id
4.平均答题数量,下面有给到公式:该学校用户答题总次数除以答过题的不同用户个数
count(*)/count(distinct t1.device_id)
count(*)表示该组一共的答题数量,每有一个人答一道题就会有一条记录
count(distinct t1.device_id) 表示查询一共有多少个用户数,并且去重
5.其他 :order by t1.university; 下面有要求就加上了
tip:查询中的表名可以不加,加了可以提高效率。
求解方案
select t1.university,
round(count(*)/count(distinct t1.device_id),4) as avg_answer_cnt
#可以对独立字段加distinct
from user_profile t1 join question_practice_detail t2
on t1.device_id = t2.device_id
group by t1.university
order by t1.university;