题解 | SQL23 统计每个学校各难度的用户平均刷题数
这题包括了三个表的连接。
这里是采用join
直接将三个表进行连接,需要注意avg_answer_cnt
的计算方式应该是将所有的问题数量加起来,除以不同设备的数量。因为一个设备可能会提多个问题,所以要对设备去重。
select
university,
difficult_level,
count(qd.question_id)/count(distinct u.device_id) as 'avg_answer_cnt'
from question_practice_detail as q
join user_profile as u
on q.device_id = u.device_id
join question_detail as qd
on q.question_id = qd.question_id
group by university, difficult_level;