题解 | #统计每个用户的平均刷题数#
统计每个用户的平均刷题数
https://www.nowcoder.com/practice/f4714f7529404679b7f8909c96299ac4
select up.university, qd.difficult_level, count(qpd.question_id)/count(distinct up.device_id) avg_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 where up.university = '山东大学' group by up.university, qd.difficult_level
在上一题的基础上,增加了对学校的条件,这里有两种方式来处理,主要是让我们理解where条件和having条件的执行时机以及数据得扫描数量;
如果user_profile的数据较大,那么使用where在筛选数据时就通过条件筛掉部分数据,可以减少后续分组的数据量。
而使用having则是在分组完成后,再对结果进行拆筛选。