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

SQL需求:按Serial#分组计算Cost与Qty乘积之和并关联至每条记录

解决SQL分组求和并映射到每条记录的问题

没问题,我来帮你搞定这个需求!你想要给每条记录加上对应Serial#分组的总费用,这个需求确实可以用子查询实现,当然还有更简洁的窗口函数方案,我都给你列出来:

方法一:使用子查询(你提到的思路)

先通过子查询计算每个Serial#对应的总费用,再把这个结果和原表关联,就能把总费用映射到每条记录上了:

SELECT 
    t.ID,
    t.Serial#,
    t.`Part #`,
    t.Cost,
    t.Qty,
    total.TotalCost AS "Total Cost"
FROM 
    your_table t
JOIN 
    (SELECT 
         Serial#,
         SUM(Cost * Qty) AS TotalCost
     FROM 
         your_table
     GROUP BY 
         Serial#) total ON t.Serial# = total.Serial#;

逻辑说明:

  1. 子查询部分:按Serial#分组,计算每组内Cost*Qty的总和,得到每个分组的总费用。
  2. 主查询:把原表和子查询的结果通过Serial#关联,这样每条原表记录就能拿到对应分组的总费用了。

方法二:使用窗口函数(更简洁高效)

如果你的数据库支持窗口函数(比如MySQL 8.0+、PostgreSQL、SQL Server等),用SUM() OVER()会更简单,不需要子查询:

SELECT 
    ID,
    Serial#,
    `Part #`,
    Cost,
    Qty,
    SUM(Cost * Qty) OVER (PARTITION BY Serial#) AS "Total Cost"
FROM 
    your_table;

逻辑说明:

SUM(Cost * Qty) OVER (PARTITION BY Serial#) 会自动按Serial#分组,计算每组内Cost*Qty的总和,并把这个值填充到该组的每一条记录中,一步到位!

输出结果验证

不管用哪种方法,最终输出都会是你想要的样子:

IDSerial#Part #CostQtyTotal Cost
1ABC11001400
2ABC21002400
3ABC31001400
4DEF11001200
5DEF21001200

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 04:24:28