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

基于PySpark按多条件计算学生培训期间平均评分

计算培训周期内学生平均评分的解决方案

首先我把你提供的原始数据整理成结构化表格,方便后续分析处理:

IDYearratestart-dateend-date
12015220152017
82012320102012
7200712Null2008
12016420152017
82010720102012
92002102002null
12015220152017
12017820152017

核心规则回顾

我们只处理start-date和end-date均不为空的记录,平均评分的计算逻辑是:
average-rate = 平均值(起始日期对应年份的评分 + 起止日期之间所有年份的评分)


方法1:用SQL实现计算

如果数据存储在数据库中,用以下SQL语句就能快速计算每个符合条件的学生ID的平均评分:

SELECT 
    ID,
    `start-date`,
    `end-date`,
    AVG(rate) AS `average-rate`
FROM 
    your_table_name
WHERE 
    `start-date` IS NOT NULL 
    AND `end-date` IS NOT NULL
    AND Year BETWEEN `start-date` AND `end-date`
GROUP BY 
    ID, `start-date`, `end-date`;

结果说明

  • 对于ID=1:起止周期是2015-2017,符合条件的评分是2、2、4、8,平均值为(2+2+4+8)/4=4
  • 对于ID=8:起止周期是2010-2012,符合条件的评分是7、3,平均值为(7+3)/2=5

方法2:用Excel实现计算

如果数据在Excel里,可以按以下步骤操作:

  1. 筛选有效数据:

    • 选中数据区域,点击「数据」→「筛选」
    • 在start-date和end-date列的筛选器中,取消勾选「空值」/「Null」
  2. 计算平均评分:

    • 添加辅助列是否在周期内,输入公式:=AND(B2>=D2, B2<=E2)(假设Year在B列,start-date在D列,end-date在E列)
    • 筛选出是否在周期内为TRUE的记录
    • 用AVERAGEIFS函数计算单个ID的平均评分,比如计算ID=1的平均值:
      =AVERAGEIFS(C:C, A:A, 1, D:D, "<>", E:E, "<>", B:B, ">="&D2, B:B, "<="&E2)
      

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 04:34:52