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

SQL查询求助:按城市、产品统计总供货量结果异常

修正SQL查询以正确汇总每个城市每个产品的总供货量

我来帮你搞定这个问题!你的查询核心问题出在GROUP BY子句的逻辑上,咱们一步步拆解修正:

首先看你当前的问题:你把Tb_Offers.Quantity放进了GROUP BY里,这会让数据库把每个不同的供货数量值都当成独立分组,导致SUM()函数完全没起到汇总作用——它只是把每个分组里唯一的Quantity值直接返回,这就是同一个城市+产品组合出现多条记录的原因。

修正后的查询

SELECT 
    Tb_Supplier.City, 
    Tb_Product.Name, 
    SUM(Tb_Offers.Quantity) AS "Quantity Offered" 
FROM Tb_Supplier
JOIN Tb_Offers ON Tb_Supplier.Supp_ID = Tb_Offers.Supp_ID
JOIN Tb_Product ON Tb_Offers.Prod_ID = Tb_Product.Prod_ID
GROUP BY Tb_Supplier.City, Tb_Product.Name
ORDER BY Tb_Supplier.City, Tb_Product.Name;

关键修正说明

  • 移除GROUP BY中的Tb_Offers.Quantity:你只需要按城市和产品名称这两个维度分组,这样同一城市+产品的所有供货记录会被合并,SUM()就能正确计算该组合的总供货量。
  • 改用显式JOIN语法:相比旧的逗号分隔表的写法,显式JOIN更清晰,能明确表之间的关联逻辑,后续维护也更方便。

效果示例

比如你原结果里芝加哥的Bernstein TV有三条记录:720、3600、7200,修正后的查询会返回一条记录,总供货量为720+3600+7200=11520,完全符合你“每个城市每个产品总供货量”的需求。

另外你提到想用DISTINCT,其实这里根本不需要——问题的核心是分组逻辑错误,不是去重的问题,修正分组后就会自动得到唯一的城市+产品组合及对应的总供货量。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 04:10:49