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

如何将员工薪资总和汇总至对应公司记录(跨字段关联)

跨字段关联薪资汇总实现方案

现有员工与公司关联数据表

Descriptionlevelsalarycodeparent company
James150012341111
John110043211111
Company name2null1111null

关联逻辑:员工(level=1)通过parent company字段关联到对应公司的code字段,需求是计算每个公司下属员工的薪资总和,新增company salary字段,仅在公司记录中填入总和,员工记录该字段为null,期望输出如下:

期望输出数据表

Descriptionlevelsalarycodeparent companycompany salary
James150012341111null
John110043211111null
Company name2null1111null600

实现方法

1. SQL场景实现

如果是在数据库中处理,有两种常用写法:

写法1:子查询关联
SELECT 
    t1.Description,
    t1.level,
    t1.salary,
    t1.code,
    t1.parent_company,
    CASE 
        WHEN t1.level = 2 THEN (SELECT SUM(salary) FROM your_table t2 WHERE t2.parent_company = t1.code)
        ELSE NULL
    END AS company_salary
FROM your_table t1;

核心逻辑:通过CASE判断当前行是否为公司记录(level=2),若是则用子查询统计所有关联到该公司的员工薪资总和,否则返回null。

写法2:窗口函数(适用于MySQL 8+、PostgreSQL等支持窗口函数的数据库)
SELECT 
    Description,
    level,
    salary,
    code,
    parent_company,
    CASE 
        WHEN level = 2 THEN SUM(salary) OVER (PARTITION BY parent_company)
        ELSE NULL
    END AS company_salary
FROM your_table
ORDER BY level, Description;

核心逻辑:用PARTITION BY parent_company按公司分组计算薪资总和,再通过CASE仅在公司记录中填充该值,员工记录留空。

2. Excel场景实现

如果是用Excel处理表格,直接用SUMIF函数即可:

  • 在company salary列的第一个单元格(比如F2)输入公式:
    =IF(B2=2, SUMIF(E:E, D2, C:C), "")
    
  • 下拉填充公式到所有行即可。
    核心逻辑:IF(B2=2)判断是否为公司记录,SUMIF(E:E, D2, C:C)统计所有parent company等于当前公司code的员工薪资总和,员工记录返回空值对应需求的null。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 19:40:35