如何在SQL中按条件筛选唯一记录,提取每位校友最新完成的学业信息
校友数据集保留单条记录(取最晚学业阶段)解决方案
核心逻辑
以学生ID作为校友唯一识别标识,同一ID下仅保留毕业年份最大值对应的行即可。
注:若存在同一校友同一年毕业多个项目的情况,可在排序规则中补充学业阶段优先级(如博士>硕士>本科)作为第二排序条件,确保保留最高学段记录。
Excel 实现步骤
- 全选数据集,先按「学生ID」升序排序,再按「毕业年份」降序排序,保证同一ID下最新的记录排在最前
- 新增辅助列,在表头下第一行输入公式
=COUNTIF($A$2:A2,A2)(假设A列为学生ID所在列),下拉填充所有行 - 筛选辅助列值为1的行,导出即可得到所需结果
SQL 实现代码
假设表名为alumni,对应字段为student_id(学生ID)、name(姓名)、education_background(受教育经历)、grad_year(毕业年份),实现代码如下:
SELECT student_id, name, education_background, grad_year FROM ( SELECT *, ROW_NUMBER() OVER(PARTITION BY student_id ORDER BY grad_year DESC) AS rank_num FROM alumni ) t WHERE rank_num = 1;
Python Pandas 实现代码
import pandas as pd # 读取数据集,可根据实际文件格式替换为read_csv等方法 df = pd.read_excel("your_file_path.xlsx") # 按毕业年份倒序排序后按学生ID去重,保留第一条记录 result_df = df.sort_values("grad_year", ascending=False).drop_duplicates("student_id", keep="first") # 导出处理后的结果 result_df.to_excel("processed_alumni_data.xlsx", index=False)
内容的提问来源于stack exchange,提问作者Abhishek Giri
相关产品推荐
相关产品推荐

