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

SQL查询优化:按唯一ID_PROD汇总实际重量并计算库存值

优化关联查询实现按产品ID聚合统计

现有关联查询会返回同一ID_PROD的多条重复记录,其中THEORETICAL_WEIGHT对唯一ID_PROD为固定值,REAL_WEIGHT为单条生产记录的实际重量。

原查询语句

SELECT 
    A.ID_PROD,  A.REAL_WEIGHT, B.THEORETICAL_WEIGHT, 
    A.REAL_WEIGHT * B.THEORETICAL_WEIGHT AS Stock
FROM 
    Table_A A,   
    Table_B B
WHERE 
    B.ID_PROD = A.ID_PROD;

原查询结果

ID_PROD | REAL_WEIGHT | THEORETICAL_WEIGHT | Stock
 P01         1,5               3              4,5
 P01         0,3               3              0,9
 P01         5,1               3              15,3
 P02         2,1               2              4,2
 P02          3                2              6        
 P03          4                6              24

优化后查询语句

推荐两种实现方式,按需选择:

方式一:直接聚合关联

利用GROUP BY按ID_PROD和固定的THEORETICAL_WEIGHT分组,计算实际重量总和:

SELECT 
    A.ID_PROD,
    SUM(A.REAL_WEIGHT) AS REAL_WEIGHT,
    B.THEORETICAL_WEIGHT,
    SUM(A.REAL_WEIGHT) * B.THEORETICAL_WEIGHT AS Stock
FROM 
    Table_A A
INNER JOIN 
    Table_B B ON B.ID_PROD = A.ID_PROD
GROUP BY 
    A.ID_PROD, B.THEORETICAL_WEIGHT;

方式二:先聚合再关联(性能更优)

先通过CTE聚合Table_A的实际重量总和,再关联Table_B获取理论重量,减少关联数据量:

WITH Aggregated_RealWeight AS (
    SELECT 
        ID_PROD,
        SUM(REAL_WEIGHT) AS TOTAL_REAL_WEIGHT
    FROM Table_A
    GROUP BY ID_PROD
)
SELECT 
    ARW.ID_PROD,
    ARW.TOTAL_REAL_WEIGHT AS REAL_WEIGHT,
    B.THEORETICAL_WEIGHT,
    ARW.TOTAL_REAL_WEIGHT * B.THEORETICAL_WEIGHT AS Stock
FROM Aggregated_RealWeight ARW
INNER JOIN Table_B B ON ARW.ID_PROD = B.ID_PROD;

预期结果

ID_PROD | REAL_WEIGHT | THEORETICAL_WEIGHT | Stock
   P01         6,9               3            20,7
   P02         5,1               2            10,2      
   P03          4                6            24

(注:原预期结果中P02的REAL_WEIGHT应为2.1+3=5.1,此处修正笔误)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 14:33:19