题解 | #统计每个学校各难度的用户平均刷题数#
统计每个学校各难度的用户平均刷题数
https://www.nowcoder.com/practice/5400df085a034f88b2e17941ab338ee8
select up.university, qd.difficult_level, 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 inner join question_detail qd on qpd.question_id = qd.question_id group by up.university, qd.difficult_level
多表查询需要进行连接操作,这里计算的人数基础是答过题的用户,因此user_info与答题详情通过device_id进行内连接。题目的难度通过question_id来关联,同样都采用inner join。
关联后我们可以先查询一下学校,device_id,question_id,难度。
接下来我们需要进行分组,要求是不同学校不同难度下的用户平均答题数量,因此需要对学校和难度进行分组,再计算总答题数和总人数,device_id统计时注意去重即可,/计算出平均值。