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

如何在SQL表中新增列展示产品对应类型的分组总成本

实现方案

分两种场景实现,可根据你的实际需求选择:

场景1:仅查询时展示该字段(推荐)

不需要修改原表结构,直接用窗口函数动态计算即可,后续表内数据变更后查询结果会自动同步,不会出现数据不一致问题:

SELECT 
    Product,
    Type,
    Cost,
    SUM(Cost) OVER (PARTITION BY Type) AS GroupsCost
FROM 你的表名;

场景2:需要持久化新增字段存储该值

如果确实需要把GroupsCost字段固化存储到原表中,分两步操作:

第一步:新增字段

ALTER TABLE 你的表名 ADD COLUMN GroupsCost INT;

第二步:批量更新字段值

兼容绝大多数数据库的通用写法:

UPDATE 你的表名 t1
SET GroupsCost = (
    SELECT SUM(Cost) 
    FROM 你的表名 t2 
    WHERE t2.Type = t1.Type
);

如果你使用MySQL 8.0+、PostgreSQL等支持关联更新的数据库,可以用更高性能的写法:

-- 以PostgreSQL为例
UPDATE 你的表名 t1
SET GroupsCost = t2.total_cost
FROM (
    SELECT Type, SUM(Cost) AS total_cost
    FROM 你的表名
    GROUP BY Type
) t2
WHERE t1.Type = t2.Type;

注意:固化存储的GroupsCost不会随原表数据更新自动同步,后续增删改数据后需要手动更新该字段值,或配置触发器实现自动更新,若无特殊存储要求优先使用场景1的方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 12:27:03