题解 | #统计每个用户的平均刷题数#
统计每个用户的平均刷题数
https://www.nowcoder.com/practice/f4714f7529404679b7f8909c96299ac4
WITH ShandongUsers AS ( SELECT device_id, university, answer_cnt FROM user_profile WHERE university = '山东大学' ) SELECT su.university, difficult_level, COUNT(answer_cnt) / COUNT(DISTINCT su.device_id) FROM ShandongUsers AS su JOIN question_practice_detail AS qpd ON su.device_id = qpd.device_id JOIN question_detail AS qd ON qpd.question_id = qd.question_id GROUP BY difficult_level;
优化策略:使用子查询或公共表表达式(CTE)来首先筛选记录再进行连接,可以减少要连接的记录数,从而提高查询性能,特别是当数据库中包含大量数据时。
这种方法有助于减少连接的负担,因为它限定了要连接的数据集的大小,只有满足条件的记录会参与连接操作,减少了计算和I/O的开销。在某些情况下,这种优化策略可以显著提高查询性能。
请注意,SQL查询的性能还取决于数据库的结构、索引、数据量以及数据库管理系统的优化策略。如果性能仍然不如预期,您可以考虑添加适当的索引或其他数据库性能调优策略来进一步提高性能。