题目描述
运营团队希望了解浙江大学的用户在不同难度题目下答题的正确率情况。
解题思路
-
筛选浙江大学的用户:
- 从
user_profile
表中筛选出university
为 "浙江大学" 的用户,获取他们的device_id
。
- 从
-
关联答题记录和题目难度:
- 使用
question_practice_detail
表与question_detail
表进行连接,通过question_id
获取每道题的难度等级。
- 使用
-
计算正确率:
- 对于每个难度级别,计算正确率,即回答正确的次数除以总答题次数。
- 正确率需要保留四位小数。
-
排序输出:
- 按照正确率 (
correct_rate
) 升序排列结果。
- 按照正确率 (
SQL 查询
-- 统计浙江大学用户在不同难度题目的答题正确率,并按正确率升序输出
SELECT
qd.difficult_level,
ROUND(SUM(CASE WHEN qpd.result = 'right' THEN 1 ELSE 0 END) / COUNT(qpd.question_id), 4) AS correct_rate
FROM
user_profile up
JOIN
question_practice_detail qpd
ON up.device_id = qpd.device_id
JOIN
question_detail qd
ON qpd.question_id = qd.question_id
WHERE
up.university = '浙江大学'
GROUP BY
qd.difficult_level
ORDER BY
correct_rate ASC;
代码解释
-
连接表:
user_profile
(up
) 与question_practice_detail
(qpd
) 通过device_id
进行连接,筛选出浙江大学的用户答题记录。question_practice_detail
(qpd
) 与question_detail
(qd
) 通过question_id
进行连接,以获取每道题的难度等级。
-
计算正确率:
- 使用
SUM(CASE WHEN qpd.result = 'right' THEN 1 ELSE 0 END)
统计回答正确的次数。 - 使用
COUNT(qpd.question_id)
统计总答题次数。 - 计算正确率并使用
ROUND
函数保留四位小数。
- 使用
-
分组与排序:
- 按照
qd.difficult_level
进行分组,以计算每个难度级别的正确率。 - 按照
correct_rate
升序排列结果,确保输出顺序符合要求。
- 按照