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

Redshift除法结果无小数问题求解:计算百分比时结果为0

Redshift整数除法返回0的问题解决方法

这是因为Redshift中整数之间的除法会默认返回整数结果——1701除以84936的商小于1,所以直接取整为0,之后再转成numeric类型也只是把整数0转换成带小数位的0而已,本质上没有改变计算结果。

要解决这个问题,核心是让除法运算以非整数类型执行,有几种简单的实现方式:

方法1:将其中一个操作数转换为numeric/float类型

在除法运算前,把被除数或除数转成numeric(或decimal、float)类型,这样Redshift会用浮点逻辑计算除法,保留小数部分:

select 1701::numeric / 84936;

或者显式指定精度:

select cast(1701 as numeric(10,2)) / 84936;

方法2:通过乘以1.0将整数转为浮点型

这是更简洁的写法,用1.0(浮点常量)乘以其中一个整数,强制触发浮点运算:

select 1701 * 1.0 / 84936;

可选:调整小数位数

如果需要固定小数位数,可以用round()函数或者再次转换类型来格式化结果:

-- 保留6位小数
select round(1701::numeric / 84936, 6);
-- 转换为指定精度的numeric
select cast(1701::numeric / 84936 as numeric(10,6));

执行以上任意一种方法,你都会得到正确的小数结果(约0.020027),而不是0。

内容的提问来源于stack exchange,提问作者Andres Urrego Angel

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:50:24