如何通过查询统计Table-Red中的总题数、总正确答案数及总错误答案数
统计Table-Red数据集的总题数、总正确/错误答案数方案
我帮你梳理了两种直接可行的SQL查询方案,适配你提供的数据集结构:
方案1:利用现有计数字段快速统计
如果你的数据集里已经有one_correct、one_incorrect这类预计算的计数字段,直接用下面的查询最简洁:
SELECT COUNT(DISTINCT user_question_id) AS total_questions, SUM(one_correct + two_correct + three_correct + four_correct + five_correct) AS total_correct_answers, SUM(one_incorrect + two_incorrect + three_incorrect + four_incorrect + five_incorrect) AS total_incorrect_answers FROM `Table-Red`;
逻辑说明:
- total_questions:通过统计唯一的
user_question_id数量,得到你的总题数(每个ID对应一道独立题目)。 - total_correct_answers:把每道题的5个选项正确计数相加,再对所有题目求和,得到用户答对的总选项数。
- total_incorrect_answers:同理累加每道题的错误选项计数,得到总错误答案数。
方案2:基于原始答题状态字段计算
如果你更依赖user_option_X_correct这类原始布尔字段(比如担心预计算字段可能有误差),可以用这个方案:
SELECT COUNT(DISTINCT user_question_id) AS total_questions, SUM( CASE WHEN user_option_one_correct THEN 1 ELSE 0 END + CASE WHEN user_option_two_correct THEN 1 ELSE 0 END + CASE WHEN user_option_three_correct THEN 1 ELSE 0 END + CASE WHEN user_option_four_correct THEN 1 ELSE 0 END + CASE WHEN user_option_five_correct THEN 1 ELSE 0 END ) AS total_correct_answers, -- 总错误数 = 总选项数 - 总正确数(每道题固定5个选项) COUNT(DISTINCT user_question_id) * 5 - SUM( CASE WHEN user_option_one_correct THEN 1 ELSE 0 END + CASE WHEN user_option_two_correct THEN 1 ELSE 0 END + CASE WHEN user_option_three_correct THEN 1 ELSE 0 END + CASE WHEN user_option_four_correct THEN 1 ELSE 0 END + CASE WHEN user_option_five_correct THEN 1 ELSE 0 END ) AS total_incorrect_answers FROM `Table-Red`;
逻辑说明:
- 先把每个
user_option_X_correct的布尔值转为1(正确)或0(错误),累加得到每道题的正确数,再求和得到总正确数。 - 总错误数通过「总选项数(总题数×5)减去总正确数」得到,避免重复计算错误状态,更高效。
验证你的示例数据:
用这两个方案查询你给出的2条数据,都会得到:
- total_questions: 2
- total_correct_answers: 8(题1全对5个 + 题2对3个)
- total_incorrect_answers: 2(题2错2个)
内容的提问来源于stack exchange,提问作者trencherman
相关产品推荐
相关产品推荐

