You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何按question_id分组统计correct和wrong的作答次数?

解决按问题分组统计作答对错次数的问题

别担心,我来帮你搞定这个统计需求!你的核心问题是之前的SQL只按answer分组,而我们需要按stack_id和question_id组合分组,同时分别统计每组里的对错次数。

正确的SQL查询语句

这里用条件聚合的方式来实现,非常适合这种需要按不同条件统计分组内数据的场景:

SELECT 
    stack_id,
    question_id,
    COUNT(CASE WHEN answer = 'wrong' THEN 1 END) AS wrong,
    COUNT(CASE WHEN answer = 'correct' THEN 1 END) AS correct
FROM answers
GROUP BY stack_id, question_id
ORDER BY stack_id, question_id;

语句解释:

  • GROUP BY stack_id, question_id:把相同stack_id和question_id的记录归为一组(因为同一个问题ID可能属于不同的stack,比如你的数据里question_id=13属于stack_id=3)
  • COUNT(CASE WHEN ... THEN 1 END):当answer匹配指定值时返回1,否则返回NULL;COUNT函数会自动忽略NULL值,这样就精准统计了每组里对应答案的次数
  • ORDER BY是可选的,用来让结果按stack和问题ID排序,看起来更整洁

非SQL的替代方案

如果你觉得SQL上手有点难,也可以用这些工具来处理:

1. Python Pandas

如果你的数据能导入Python,用Pandas可以快速完成统计:

import pandas as pd

# 假设数据已经读取到DataFrame中(比如从CSV/数据库导入)
answers_df = pd.DataFrame([
    [1,34,1,45,'wrong'],
    [2,55,1,45,'correct'],
    [3,2,3,13,'wrong'],
    [4,99,1,46,'correct'],
    [5,12,3,13,'wrong'],
    [6,12,2,10,'correct']
], columns=['id','user_id','stack_id','question_id','answer'])

# 分组统计并整理格式
result = answers_df.groupby(['stack_id', 'question_id'])['answer'].value_counts()
result = result.unstack(fill_value=0).reset_index()[['stack_id', 'question_id', 'wrong', 'correct']]

print(result)

2. Excel数据透视表

如果数据在Excel里,用数据透视表几步就能搞定:

  • 选中所有数据,点击「插入」→「数据透视表」
  • 把stack_id和question_id拖到「行」区域
  • 把answer拖到「列」区域
  • 把answer拖到「值」区域,设置为「计数」
  • 最后调整列的顺序,就能得到和你期望一致的表格啦

内容的提问来源于stack exchange,提问作者Adam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 07:01:14