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

SQL计算中CAST转换精度丢失问题调整方法咨询

SQL预测准确率计算精度问题修复方案

问题根因

你遇到的是SQL默认整数除法的截断问题:绝大多数主流SQL方言(MySQL、SQL Server、PostgreSQL等)中,两个INT类型的数值执行除法运算时,默认返回整数结果,会直接舍弃全部小数位。
你给出的案例中,2596和2504均为整数,运算时会先执行整数除法得到结果1,再转换为decimal(5,2)类型,最终输出就是错误的1.00。

修复方案

有两种通用的调整方式,兼容性覆盖绝大多数数据库:

  • 方案1:通过乘1.0隐式转换数值类型(写法最简单)
    在求和结果后先乘1.0,将整数转为小数类型后再做除法,避免整数截断:
CAST(SUM(p.QTY) * 1.0 / SUM(r.QTY) AS decimal (5,2)) AS 'Forecast Accuracy'
  • 方案2:显式转换类型(兼容性最高,无隐式转换风险)
    先显式把其中一个求和结果转换为decimal类型后再做除法:
CAST(CAST(SUM(p.QTY) AS decimal(10,2)) / SUM(r.QTY) AS decimal(5,2)) AS 'Forecast Accuracy'

效果验证

代入你给出的测试值:SUM(p.QTY)=2596、SUM(r.QTY)=2504,调整后运算结果为2596/2504≈1.0367,四舍五入保留2位小数后即可得到正确的1.04。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 17:39:03