统计学生A等级次数并关联至已有表的实现方案咨询
学生A等级次数统计及关联表实现方法
以下按不同常用使用场景给出可直接落地的实现方案:
1. 关系型数据库(SQL)实现
步骤1:统计每名学生A等级获得次数
假设你的成绩表名为student_grades,统计逻辑如下,执行后会得到每个学生对应的A等级总次数:
SELECT student, COUNT(CASE WHEN grade = 'A' THEN 1 END) AS a_grade_count FROM student_grades GROUP BY student;
你提供的样例数据执行后输出结果为:Student1对应2次,Student2对应1次,Student3对应0次
步骤2:关联已有目标表
假设你待关联的另一张表名为student_info,两张表通过student字段(学生唯一标识)关联,使用左连接保证目标表的所有学生记录都保留,A次数为空的学生自动填充为0:
SELECT target.*, -- 可替换为你需要查询的目标表具体字段 COALESCE(stat.a_grade_count, 0) AS a_grade_total FROM student_info target LEFT JOIN ( SELECT student, COUNT(CASE WHEN grade = 'A' THEN 1 END) AS a_grade_count FROM student_grades GROUP BY student ) stat ON target.student = stat.student;
2. Excel 实现
步骤1:统计A等级次数
使用COUNTIFS函数,假设成绩表的学生列是A列、等级列是B列,统计页的第一个学生名在D2单元格,输入公式后下拉填充所有学生即可:
=COUNTIFS(成绩表!A:A,D2,成绩表!B:B,"A")
步骤2:关联到另一张表
使用VLOOKUP函数匹配统计结果,假设目标表的学生名列是A列,统计结果存放在「A次数统计」表的A-B列,目标表B2单元格输入公式后下拉填充:
=VLOOKUP(A2,'A次数统计'!A:B,2,0)
3. Python Pandas 实现
适用于批量处理数据场景,代码参考如下:
import pandas as pd # 读取成绩表 grade_df = pd.read_excel("学生成绩表.xlsx") # 统计A等级次数 a_count = grade_df[grade_df["grade"] == "A"].groupby("student", as_index=False).agg(a_grade_count=("grade", "count")) # 读取待关联的目标表 target_df = pd.read_excel("待关联表.xlsx") # 合并关联 result_df = pd.merge(target_df, a_count, on="student", how="left") # 无A记录的学生填充为0 result_df["a_grade_count"] = result_df["a_grade_count"].fillna(0).astype(int) # 导出结果 result_df.to_excel("关联结果.xlsx", index=False)
内容的提问来源于stack exchange,提问作者SLee
相关产品推荐
相关产品推荐

