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

如何按Pcode计算Cost-price平均值并更新至tbProduct的Avg_costprice列

实现方案:按Pcode更新tbProduct的平均成本价

核心思路是先从tbStockIn按Pcode分组计算对应成本价的平均值,再通过关联tbProduct表将结果更新到Avg_costprice列。以下是主流数据库的具体实现代码:

MySQL 版本

UPDATE tbProduct p
JOIN (
    -- 先分组计算每个Pcode的平均成本
    SELECT Pcode, AVG(`Cost-price`) AS avg_cost
    FROM tbStockIn
    GROUP BY Pcode
) s ON p.Pcode = s.Pcode
SET p.Avg_costprice = s.avg_cost;

SQL Server 版本

UPDATE p
SET p.Avg_costprice = s.avg_cost
FROM tbProduct p
INNER JOIN (
    SELECT Pcode, AVG([Cost-price]) AS avg_cost
    FROM tbStockIn
    GROUP BY Pcode
) s ON p.Pcode = s.Pcode;

PostgreSQL 版本

UPDATE tbProduct p
SET Avg_costprice = s.avg_cost
FROM (
    SELECT Pcode, AVG("Cost-price") AS avg_cost
    FROM tbStockIn
    GROUP BY Pcode
) s
WHERE p.Pcode = s.Pcode;

注意事项

  • 由于列名Cost-price包含连字符,不同数据库需要用对应符号包裹:MySQL用反引号` `,SQL Server用方括号[],PostgreSQL用双引号"",否则会触发语法错误。
  • 如果tbStockIn中存在tbProduct没有的Pcode,这些记录不会影响tbProduct;反过来,如果tbProduct的某个Pcode在tbStockIn中无匹配记录,其Avg_costprice会保留原有值,若要统一设为NULL,可以改用LEFT JOIN并配合COALESCE函数处理。
  • 执行更新前建议单独运行子查询(即括号内的SELECT语句),确认计算出的平均值符合预期,避免误更新数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 23:24:37