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

SQL Server相关子查询实现区域单位总和及占比统计

按区域统计Units总和及占比的SQL解决方案

需求

按区域统计unit字段的总和,同时计算该总和占全局总unit数的百分比。

原代码问题分析

你提供的CTE已经正确按区域分组计算了各区域的unit总和,但后续关联原表salesorders后,sum(s.unit)计算的是当前区域的unit总和而非全局总数,且未分组导致报错。

修正后的SQL(SQL Server)

WITH RegionUnits AS (
    SELECT region, SUM(unit) AS Sum_unit
    FROM salesorders
    GROUP BY region
),
TotalUnits AS (
    SELECT SUM(unit) AS Total
    FROM salesorders
)
SELECT 
    ru.region,
    ru.Sum_unit,
    ROUND((ru.Sum_unit * 100.0) / tu.Total, 3) AS Percentage
FROM RegionUnits ru
CROSS JOIN TotalUnits tu;

代码说明

  1. RegionUnits CTE:按区域分组,计算每个区域的unit总和。
  2. TotalUnits CTE:计算全局所有unit的总数。
  3. 使用CROSS JOIN关联两个CTE,确保每个区域都能获取到全局总数,再计算占比(乘以100.0是为了避免整数除法,ROUND保留3位小数匹配预期结果)。

预期结果

RegionSum_unitPercentage
East2529.411
West6071.588

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 06:22:10