SQL技术问询:按product_id分组汇总quantity并关联对应name列
解决方法
你需要按product_id分组,同时关联对应的name并计算quantity总和,直接用GROUP BY就能实现,不需要窗口函数加DISTINCT,正确的SQL语句如下:
SELECT product_id, name, SUM(quantity) AS sumquantity FROM ord1 GROUP BY product_id, name;
原代码的问题
- 原代码只查询了
product_id和sumquantity,没有包含name列,自然无法显示对应名称 - 使用窗口函数
SUM() OVER (PARTITION BY)会为每一行生成总和值,再用DISTINCT(product_id)去重属于绕路写法,若同一个product_id对应多个不同name,结果还会出现偏差
如果你的表中一个product_id对应唯一的name,上面的GROUP BY写法完全适用;若存在一个product_id对应多个name的情况,需根据业务逻辑调整,比如取每个product_id对应的首个名称:
SELECT product_id, MAX(name) AS name, -- 也可使用MIN(name),按需选择 SUM(quantity) AS sumquantity FROM ord1 GROUP BY product_id;
内容的提问来源于stack exchange,提问作者newcommer
相关产品推荐
相关产品推荐

