如何为科目分数数据表的每一行更新对应科目的最高、最低分数
核心逻辑为按科目分组计算对应科目的最高分、最低分,再将计算结果匹配到该科目下的所有行,常用工具的实现方案如下:
1. SQL 实现
使用窗口函数可以直接完成分组计算,无需额外关联表:
SELECT subject, Marks, MAX(Marks) OVER (PARTITION BY subject) AS maxmarks, MIN(Marks) OVER (PARTITION BY subject) AS minmarks FROM 你的表名;
2. Python Pandas 实现
用groupby+transform可以直接把分组聚合结果映射回原表的每一行:
import pandas as pd # 假设原数据存储在df变量中 df['maxmarks'] = df.groupby('subject')['Marks'].transform('max') df['minmarks'] = df.groupby('subject')['Marks'].transform('min')
3. Excel 实现
假设你的数据中,subject列为A列、Marks列为B列,表头在第1行,数据从第2行开始:
- maxmarks列(C列)C2单元格输入公式:
=MAXIFS(B:B,A:A,A2),下拉填充所有行 - minmarks列(D列)D2单元格输入公式:
=MINIFS(B:B,A:A,A2),下拉填充所有行
如果使用的是没有MAXIFS/MINIFS函数的旧版Excel,改用数组公式:
- C2输入
=MAX(IF(A:A=A2,B:B)),按「Ctrl+Shift+Enter」组合键确认后下拉 - D2输入
=MIN(IF(A:A=A2,B:B)),按「Ctrl+Shift+Enter」组合键确认后下拉
内容的提问来源于stack exchange,提问作者Kanna
相关产品推荐
相关产品推荐

