题解 | #统计每个学校各难度的用户平均刷题数#
统计每个学校各难度的用户平均刷题数
https://www.nowcoder.com/practice/5400df085a034f88b2e17941ab338ee8
SELECT up.university, qd.difficult_level, COUNT(qpd.question_id) / COUNT(DISTINCT qpd.device_id) as avg_answer_cnt FROM user_profile up RIGHT JOIN question_practice_detail qpd ON up.device_id = qpd.device_id JOIN question_detail qd ON qpd.question_id = qd.question_id group by up.university, qd.difficult_level
题目:运营想要计算一些参加了答题的不同学校、不同难度的用户平均答题量,请你写SQL取出相应数据。
思路:
- 判断涉及哪几张表:user_profile(用户信息)、question_practice_detail(答题信息)、question_detail(题目信息,难度)
- 用join。。on。。join。。on把几张表关联起来;
- “不同学校、不同难度”,可以看出需要 group by;
- 再写 “用户平均答题量”的计算公式:总答题量 / 答题人数
题目里面强调“参加了答题”,关联的时候需要注意用left还是right