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

如何关联employee与branch表,按branch_name分组展示薪资总支出

按部门名称分组统计薪资支出的SQL实现

现有employee和branch两张数据表,需按部门名称(branch_name)分组展示薪资支出,关联两张表并显示部门名称与薪资总额的实现方式如下:

核心实现代码

仅统计有员工的部门

SELECT b.branch_name, SUM(e.salary) AS total_salary
FROM employee e
JOIN branch b ON e.branch_id = b.branch_id
GROUP BY b.branch_name;

统计所有部门(含无员工的部门)

如果需要包含暂时没有员工的部门,可使用LEFT JOIN配合COALESCE处理空值:

SELECT b.branch_name, COALESCE(SUM(e.salary), 0) AS total_salary
FROM branch b
LEFT JOIN employee e ON b.branch_id = e.branch_id
GROUP BY b.branch_name;

代码说明

  • 通过JOIN(或LEFT JOIN)以branch_id为关联字段,匹配员工表与部门表的数据,让每条员工记录对应到所属部门名称。
  • SUM(salary)计算每个部门的薪资总额,别名total_salary让结果可读性更强。
  • GROUP BY b.branch_name指定按部门名称分组,确保统计结果按部门维度聚合。
  • COALESCE函数可将无员工部门的薪资总额(默认返回NULL)替换为0,避免结果出现空值。

原数据表结构

CREATE TABLE employee (
    emp_id INT PRIMARY KEY,
    first_name VARCHAR(40),
    last_name VARCHAR(40),
    birth_day DATE,
    sex VARCHAR(1),
    salary INT,
    super_id INT,
    branch_id INT
); 

CREATE TABLE branch (
    branch_id INT PRIMARY KEY,
    branch_name VARCHAR(40),
    mgr_id INT,
    mgr_start_date DATE,
    FOREIGN KEY(mgr_id) REFERENCES employee(emp_id) ON DELETE SET NULL
);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 03:23:11