如何使用SQL合并测试结果行,实现单条记录对应单个学生测试
测试结果数据合并实现方案
一、数据库SQL实现
通过分组聚合语句直接在数据库中完成数据合并,核心逻辑是按学生姓名+测试名称分组,统计每组的答题总数和答对题数:
SELECT 学生姓名, 测试名称, COUNT(*) AS 答题次数, SUM(答对情况(0=否,1=是)) AS 答对情况 FROM 你的数据表名 GROUP BY 学生姓名, 测试名称;
关键说明:
GROUP BY 学生姓名, 测试名称:将数据按每个学生的单个测试维度分组COUNT(*):统计分组内的记录条数,即该学生该测试的总答题次数SUM(答对情况(0=否,1=是)):将分组内的答对标记(1为对)求和,直接得到答对题数
二、Python Pandas本地处理
如果需要导出数据到本地处理,用Pandas可以快速完成合并:
import pandas as pd # 读取数据(实际场景可替换为pd.read_csv/pd.read_excel读取文件) raw_data = pd.DataFrame({ '学生姓名': ['Mary', 'Mary', 'Mary', 'Joseph', 'Joseph', 'Joseph', 'Tom', 'Tom', 'Tom'], '测试名称': ['Intro Assessment'] * 9, '答题次数': [1] * 9, '答对情况(0=否,1=是)': [1, 0, 1, 1, 1, 1, 0, 0, 1] }) # 分组聚合生成结果 merged_result = raw_data.groupby(['学生姓名', '测试名称']).agg( 答题次数=('答题次数', 'count'), 答对情况=('答对情况(0=否,1=是)', 'sum') ).reset_index() # 输出或保存结果 print(merged_result) # merged_result.to_excel('合并结果.xlsx', index=False)
关键说明:
groupby(['学生姓名', '测试名称']):指定分组维度agg():定义每个字段的聚合规则,count统计总答题数,sum统计答对题数reset_index():将分组索引转为普通列,输出格式与期望结果一致
内容的提问来源于stack exchange,提问作者Manny805
相关产品推荐
相关产品推荐

