我正在尝试使用子查询中的两个变量来计算一个比率,我希望我的结果在小数点后有三个值。
变量:
calls -- type(整数)
盒子--类型(浮动)
ROUND((calls / boxes) * 100.0, 3) Call_Rate仅返回两个小数点
当我使用
(CAST(calls AS DECIMAL(10,3)) / (boxes AS DECIMAL(10,3)) * 100.0 Call_Rate此代码返回小数点后的三位数,但第三位数始终为0,因此进行了四舍五入。
当将两个变量都转换为浮点数时,它也只返回十进制数后的2个值。
有没有办法执行这个操作,让它返回3个小数点。
发布于 2018-02-26 07:26:06
(CAST(calls AS DECIMAL(10,5)) / (boxes AS DECIMAL(10,5)) * 100.0 Call_Rate当您乘以100时,您将小数点移动到正确的两位,因此您在小数转换中需要另外两位。
发布于 2018-02-26 15:56:24
第一次计算实际上四舍五入为三位数,但是您可能从SQL Assistant运行此查询,并且默认精度为2。您可以在工具>选项>要为浮动列显示的小数位数中对其进行更改
第二次计算的结果是基于Teradata的小数计算规则,见DECIMAL Result Data Type
简而言之:先乘后除
100 * CAST(calls AS DECIMAL(10,3)) / CAST(boxes AS DECIMAL(10,3)) AS Call_Rate或者保留浮点并进行最后的强制转换:
cast( 100 * calls / boxes as decimal(10,3))https://stackoverflow.com/questions/48979454
复制相似问题