如何在SQL Server中按多维度分组计算员工总数并填充表
在SQL Server中实现多维度分组求和并填充结果
你可以直接使用SUM() OVER (PARTITION BY)语法,它完全支持多维度分组——只需要在PARTITION BY子句中用逗号分隔多个分组字段即可。针对你的需求,以下是具体的实现代码:
SELECT Municipality, [Company Type ID], [Number of Employees], -- 同一市政下的员工总数:按Municipality单维度分区求和 SUM([Number of Employees]) OVER (PARTITION BY Municipality) AS [Total employees in same municipality], -- 同一市政+同一公司类型下的员工总数:按两个字段多维度分区求和 SUM([Number of Employees]) OVER (PARTITION BY Municipality, [Company Type ID]) AS [Total Employees in same company ID and same Municipality] FROM YourTableName; -- 替换为你的实际表名
代码说明
PARTITION BY Municipality:将数据按市政ID分组,计算每个分组内的员工总数,结果会填充到该分组的每一行对应列中。PARTITION BY Municipality, [Company Type ID]:同时按市政ID和公司类型ID两个维度交叉分组,计算每个细分分组内的员工总数。
执行结果验证
用你的测试数据执行上述查询后,会得到与期望完全一致的结果:
| Municipality | Company Type ID | Number of Employees | Total employees in same municipality | Total Employees in same company ID and same Municipality |
|---|---|---|---|---|
| 03212 | 10332 | 0 | 22 | 17 |
| 03212 | 10332 | 12 | 22 | 17 |
| 03212 | 10332 | 2 | 22 | 17 |
| 03212 | 10332 | 3 | 22 | 17 |
| 03212 | 10333 | 4 | 22 | 5 |
| 03212 | 10333 | 1 | 22 | 5 |
| 03133 | 10554 | 4 | 63 | 59 |
| 03133 | 10554 | 55 | 63 | 59 |
| 03133 | 10555 | 4 | 63 | 4 |
内容的提问来源于stack exchange,提问作者Praanto
相关产品推荐
相关产品推荐

