题解 | #统计每个用户的平均刷题数#
统计每个用户的平均刷题数
http://www.nowcoder.com/practice/f4714f7529404679b7f8909c96299ac4
解这道题其实就是把三个表水平连接成一个"宽表",这个宽表包含了所有字段。 而水平连接一般使用连接来实现,我这边使用了内连接。 接下来就是确认连接的过滤条件以及按什么字段进行分组。 最后确定用户平均答题数即等于按分组统计下的:答题总数/去重之后的用户数,SQL的写法可以参考我下面这个。 SELECT up.university,qd.difficult_level, COUNT(qd.question_id) / COUNT(DISTINCT qpd.device_id) AS avg_answer_cnt FROM question_practice_detail AS qpd INNER JOIN user_profile AS up ON qpd.device_id = up.device_id AND up.university = '山东大学' INNER JOIN question_detail AS qd ON qpd.question_id = qd.question_id AND qpd.result IS NOT NULL GROUP BY up.university,qd.difficult_level;