SQL分区精度

时间:2018-01-29 20:15:01

标签: sql sql-server rounding division

我有2列我需要除和(cola)/ sum(ColB),但我没有得到所需的结果,因为SQL服务器似乎截断小数后的值 例如。我有 -

select 281370/1035

使用简单除法给出271,而除法的实际结果为271.8550724637681,我想显示271.8

我试过

SELECT cast(round(281370/1035,1) as numeric(36,1))

但结果为271.0

4 个答案:

答案 0 :(得分:1)

在SQL Server中,您必须将整数转换为十进制,并且可以使用Round来获得所需的精度。

SELECT cast(Round(CAST(281370 AS decimal) / CAST(1035 AS decimal),1,1) as decimal(10,1))

答案 1 :(得分:0)

@Stormcloak给出了一个特别想要一个位置作为尾数的答案,但要回复一个确切的答案,你可以简单地#34;隐式更改数据类型。

select 281370.0/1035

返回:

271.855072

答案 2 :(得分:0)

问题是您给出了int编号并想要一个小数结果

试试这个

select convert(decimal(30,10),281370.0/1035.0)

select Round(convert(decimal(30,10),281370.0/1035.0),1,1)

答案 3 :(得分:0)

在Presto DB中: 选择(CAST(11为小数(8,6))/ CAST(7为小数(8,6)))

结果:1​​.571429

十进制(xp,xs) xp->总位数(小数点前+小数点后) xs->小数点后的位数

参考:https://prestodb.io/docs/current/functions/decimal.html