试图了解这种行为
CREATE TABLE tab (x DECIMAL(10,0), y DECIMAL(10,0))
INSERT INTO tab VALUES(1, 3)
select x / y from tab
将根据the rules in Redshift docs返回0.3333 ....至小数点后11位。
我不明白的是:如果我用转换为相同类型(x / 3::decimal(10,0)
)的文字除以,我将得到恰好4个小数位(0.3333
)
除了使用float
首先将商写到表中或更差的方法之外,如何对结果的精度/小数位数进行更细粒度的控制?
答案 0 :(得分:1)
使用示例标签表
select x / y,
((x/ 3::decimal)),
((x/ (select 3)::decimal)),
((x/ (select 3)::decimal))::decimal(10,6)
from tab;
返回
0.33333333333 0.3333 0.3333333333333333333 0.333333
在第三个示例中看到,用(选择3):: decimal替换3 :: decimal可以大大提高精度。
如果需要设置输出精度,则可以像我的第四个示例((x/ (select 3)::decimal))::decimal(10,6)