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

如何编写SQL查询计算食材已制备量与剩余量?

正确SQL查询:计算配方已制备量与剩余量

数据表结构与数据

配方表 recipe_tbl:

Product_IDProduct_NameReq_QtyUnits
F-0001Flour120gr
S-0001Sugar100gr

制备记录表 prepared_tbl:

Trans_CodeTrans_DateProduct_IDQtyUnits
t-2302-0012023-02-16F-000110gr
t-2302-0022023-02-16F-000110gr
t-2302-0032023-02-16S-000110gr

期望输出

Product_IDProduct_NameReq_QtyUnitsPreparedRemaining
F-0001Flour120gr20100
S-0001Sugar100gr1090

无效查询问题分析

你当前的查询仅返回了Product_ID和已制备总量,缺少需求中的Product_Name、Req_Qty、Units字段,也没有计算剩余量;同时如果某产品无制备记录,SUM(b.Qty)会返回NULL,导致后续计算异常。

正确SQL查询

SELECT 
    a.Product_ID,
    a.Product_Name,
    a.Req_Qty,
    a.Units,
    COALESCE(SUM(b.Qty), 0) AS Prepared,
    a.Req_Qty - COALESCE(SUM(b.Qty), 0) AS Remaining
FROM recipe_tbl a
LEFT JOIN prepared_tbl b ON a.Product_ID = b.Product_ID
GROUP BY a.Product_ID, a.Product_Name, a.Req_Qty, a.Units;

关键说明

  1. LEFT JOIN保留全量配方记录:确保即使产品没有任何制备记录,也会出现在结果集中。
  2. COALESCE处理空值:将无制备记录时SUM(b.Qty)返回的NULL转为0,避免剩余量计算出现NULL值。
  3. 完整分组字段:按照SQL标准,GROUP BY需包含所有非聚合字段,保证查询合法性和结果准确性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 00:31:01