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

问询:部门规模净变化的SQL查询优化及PowerBI实现方法

部门规模净变化计算方案

原表结构与示例数据

EmployeeIDPreviousDeptNewDeptUpdateDate
101SalesMarketing2026-01-14
102AdminSales2026-02-02

简洁SQL实现方案

可以通过UNION ALL合并部门流入、流出记录,再一次性聚合计算净变化,比双CTE写法更简洁:

SELECT 
    Dept AS Department,
    SUM(Change) AS NetChange
FROM (
    SELECT NewDept AS Dept, 1 AS Change FROM DepartmentChanges
    UNION ALL
    SELECT PreviousDept AS Dept, -1 AS Change FROM DepartmentChanges
) AS DeptChanges
GROUP BY Dept
ORDER BY NetChange DESC;

逻辑说明

  • 第一部分将员工的新部门标记为+1(代表部门流入)
  • 第二部分将员工的原部门标记为-1(代表部门流出)
  • 外层按部门分组求和,直接得出该部门的规模净变化,结果与原CTE方案一致。

PowerBI实现步骤

1. 导入数据

打开PowerBI Desktop,点击主页选项卡的获取数据,选择对应数据源(如SQL Server、Excel等),找到DepartmentChanges表完成导入。

2. 计算部门净变化

方法1:DAX创建计算表

在建模选项卡点击新建表,输入以下DAX公式:

部门净变化 = 
VAR 流入记录 = SELECTCOLUMNS(DepartmentChanges, "部门", DepartmentChanges[NewDept], "变化值", 1)
VAR 流出记录 = SELECTCOLUMNS(DepartmentChanges, "部门", DepartmentChanges[PreviousDept], "变化值", -1)
VAR 合并记录 = UNION(流入记录, 流出记录)
RETURN
SUMMARIZE(合并记录, 合并记录[部门], "净变化", SUM(合并记录[变化值]))

方法2:Power Query预处理数据

  • 进入转换数据界面,选中DepartmentChanges表
  • 点击主页选项卡的追加查询,选择追加为新查询,将原表追加一次
  • 添加条件列:第一次导入的表设变化值=1、部门=NewDept;追加的表设变化值=-1、部门=PreviousDept
  • 移除多余列,按部门分组,对变化值求和得到净变化

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.01 14:52:27