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

如何按年度计算员工累计薪资(Cum_Sal)?

补全员工年度累计薪资(Cum_Sal)解决方案

嗨,从你给出的薪资数据来看,核心需求是补全缺失的Cum_Sal列,而且能明显看出累计规则是按自然年度单独计算(2017年1月重新从当月薪资开始累计,而非延续2016年的总额)。下面分两种最常用的场景给你具体解决办法:

一、SQL 解决方案(数据库场景)

如果你的数据存储在数据库表(比如表名为employee_salary),可以用窗口函数快速实现自动累计,不同数据库的语法略有差异,这里给你两种主流版本:

MySQL/MariaDB 版本

SELECT 
    EMPLOYEE,
    MONTH,
    YEAR,
    SALARY,
    -- 按员工+年度分组,按月份顺序累加薪资
    SUM(SALARY) OVER (
        PARTITION BY EMPLOYEE, YEAR 
        ORDER BY FIELD(MONTH, 'JAN','FEB','MAR','APR','MAY','JUN','JUL','AUG','SEP','OCT','NOV','DEC')
    ) AS Cum_Sal
FROM employee_salary;

PostgreSQL 版本

SELECT 
    EMPLOYEE,
    MONTH,
    YEAR,
    SALARY,
    -- 按员工+年度分组,将月份转成日期后排序累加
    SUM(SALARY) OVER (
        PARTITION BY EMPLOYEE, YEAR 
        ORDER BY TO_DATE(MONTH, 'MON')
    ) AS Cum_Sal
FROM employee_salary;

核心逻辑说明

  • PARTITION BY EMPLOYEE, YEAR:确保每个员工的每一年单独累计,不会跨年度叠加总额
  • ORDER BY:按月份的时间顺序排序,保证累计是从年初到年末依次计算
  • SUM(SALARY) OVER(...):自动对分组内的薪资按顺序累加,直接生成完整的Cum_Sal列

二、Excel 解决方案(表格场景)

如果你的数据在Excel中,可以用SUMIFS函数结合绝对引用实现自动累计:

假设数据从A1(EMPLOYEE表头)到E1(Cum_Sal表头)开始,在E2单元格输入公式:

=SUMIFS(D$2:D2, A$2:A2, A2, C$2:C2, C2)

输入完成后下拉填充整个E列,就能自动补全所有缺失的Cum_Sal值。

核心逻辑说明

  • SUMIFS(D$2:D2, ...):只累加当前行及以上的薪资,实现逐行累计
  • A$2:A2, A2:限定只计算当前员工的记录
  • C$2:C2, C2:限定只计算当前年度的记录

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:06:49