You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

CNC机床效率计算代码异常求助:结果与预期不符

解决CNC机床八小时班次效率计算的SQL公式问题

嘿,我看你在计算CNC效率时碰到了结果不符合预期的问题,咱们一步步来排查:

问题根源:多余的除法步骤

你预期的计算逻辑是:

((Completed / 8) / (PPHOURGOAL * 8)) * 100

但你写的SQL代码里多了一个/NULLIF(Completed,0)的操作,这直接导致了结果偏差。咱们把代码拆解开来看看:

你的原代码:

cast(((Completed / 8) /NULLIF(Completed,0) / (PPHOURGOAL * 8) )* 100 as dec(5,4)) as EightHourShiftEfficiency

实际执行的计算逻辑是:
((Completed/8) ÷ Completed) ÷ (PPHOURGOAL×8) × 100

代入你的测试值(Completed=2,PPHOURGOAL=1):
((2/8)÷2)÷8 ×100 = (0.25÷2)÷8 ×100 = 0.125÷8×100 = 1.5625,这正好是你得到的错误结果。

修正后的代码

去掉那个多余的÷Completed步骤,同时把NULLIF放在正确的位置(防止分母为0),另外建议把整数8改成8.0,避免整数除法截断小数(如果Completed是整数类型的话,整数除法会丢失精度):

CAST(
    ((Completed / 8.0) / NULLIF(PPHOURGOAL * 8.0, 0)) * 100 
    AS DEC(5,4)
) AS EightHourShiftEfficiency

验证修正后的结果

代入你的测试值计算:
((2/8.0)/(1×8.0))×100 = (0.25/8)×100 = 3.125

这里我注意到你说预期结果是2,这说明你的效率定义可能和当前公式不匹配。如果你的效率逻辑是其他定义(比如实际小时产量与目标小时产量的比值),可以再补充说明,不过当前代码的核心错误肯定是多了那个除以Completed的步骤。


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

火山引擎 最新活动