我试图通过使用子查询中的两个变量来计算一个比率,我希望我的结果在小数点后面有三个值。
变量:
调用 - 类型(整数)
box - type(float)
ROUND((calls / boxes) * 100.0, 3) Call_Rate
只返回两个小数点
当我使用
时 (CAST(calls AS DECIMAL(10,3)) / (boxes AS DECIMAL(10,3)) * 100.0 Call_Rate
此代码返回小数点后的三位数,但第三位数始终为0,因此它将被舍入。
将两个变量都转换为float时,它也会在十进制后返回2个值。
有没有办法执行此操作使其返回3个小数点。
答案 0 :(得分:1)
(CAST(calls AS DECIMAL(10,5)) / (boxes AS DECIMAL(10,5)) * 100.0 Call_Rate
当你乘以100时,你将小数点移到右边两个位置,所以在十进制转换中还需要两个位置。
答案 1 :(得分:1)
第一个计算实际上是向三个数字舍入,但您可能从SQL Assistant运行此查询,并且默认精度为两个。您可以在工具>中进行更改选项> Float列显示的小数位数
第二次计算的结果基于Teradata的小数计算规则,请参阅DECIMAL Result Data Type
简而言之:首先乘以,然后除
100 * CAST(calls AS DECIMAL(10,3)) / CAST(boxes AS DECIMAL(10,3)) AS Call_Rate
或者保留Float并进行最终演员:
cast( 100 * calls / boxes as decimal(10,3))