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

如何在复杂条件下计算组合套装的最大可生产数量

计算套装最大可生产数量的实现方法

核心思路

要算出每个套装的最大可生产数,关键是找到套装里最“拖后腿”的子件——也就是每个子件库存能支撑的套数的最小值。具体分三步实现:


步骤1:统计每套所需子件的数量

先从组合表composition按套装(parent)和子件(child)分组,统计每个子件在单套中的需求量:

SELECT 
    parent,
    child,
    COUNT(child) AS required_qty
FROM composition
GROUP BY parent, child;

执行后得到子件需求量统计:

parent child required_qty
A      B     2
A      C     1
D      E     1
D      F     1

步骤2:关联库存表计算子件可支撑的套数

将上述结果与库存表stock关联,用子件库存数除以单套需求量,得到该子件能支持的套装数量(用整数除法确保结果为整数套):

SELECT 
    c.parent,
    s.stock / c.required_qty AS possible_sets
FROM (
    SELECT parent, child, COUNT(child) AS required_qty
    FROM composition
    GROUP BY parent, child
) c
JOIN stock s ON c.child = s.code;

执行后得到各子件的可支撑套数:

parent possible_sets
A      2  -- B库存4 ÷ 2
A      3  -- C库存3 ÷ 1
D      6  -- E库存6 ÷ 1
D      7  -- F库存7 ÷ 1

步骤3:取每个套装的最小支撑数

对每个套装(parent),取所有子件可支撑套数的最小值,即为该套装的最大可生产数量:

SELECT 
    parent,
    MIN(s.stock / c.required_qty) AS numberOfSet
FROM (
    SELECT parent, child, COUNT(child) AS required_qty
    FROM composition
    GROUP BY parent, child
) c
JOIN stock s ON c.child = s.code
GROUP BY parent;

最终得到期望结果:

parent numberOfSet
A      2
D      6

补充说明

  • 若使用的数据库不支持自动整数除法(如PostgreSQL),可改用FLOOR(s.stock / c.required_qty)或DIV运算符保证结果为整数;
  • 若子件库存为0,possible_sets会是0,对应套装的可生产数也为0,符合实际生产逻辑;
  • 套装自身的库存(如A、D的库存)不参与计算,因为我们统计的是用子件组装新套装的能力,成品库存不影响生产上限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 06:32:17