题解 | 统计每个学校的答过题的用户的平均答题数
统计每个学校的答过题的用户的平均答题数
https://www.nowcoder.com/practice/88aa923a9a674253b861a8fa56bac8e5
本题的重点在于理解平均答题率,平均答题率 = 总答题次数(不去重)/不同的答题人数(去重)
换言之,比如针对问题111,A、B两位用户都作答了,那么总答题次数记作2,答题人数记作2,这时平均答题率为1.
有了上述思路,我们考虑,
#1. 以答题信息表question_practice_detail 作为主表,left join用户信息表user_profile。
with a as (
select
b.university,
count(a.question_id) as user_answer,
count(distinct(a.device_id)) as user_number
from question_practice_detail as a
left join user_profile as b on a.device_id = b.device_id
group by b.university
)
select
a.university,
round(avg(a.user_answer/a.user_number),4)as avg_answer_cnt
from a
group by university
order by university
;
#2. 以用户信息表user_profile为主表,join答题信息表question_practice_detail。
select
a.university,
round(count(b.question_id)/count(distinct(a.device_id)),4) as avg_answer_cnt
from user_profile as a
join question_practice_detail as b on a.device_id = b.device_id
group by a.university
order by a.university
;
加油!!!!

