我有一个简单的计算(910/28 = 3.5),我正在尝试在SQL查询中执行此操作:
SELECT CONVERT(DECIMAL(5,2), (910 / 28),2) AS average
但答案是在32.00出现,我显然错过了一些简单的事情,有人可以花点时间指出我的错误吗?
谢谢, ç
答案 0 :(得分:5)
使用此:
SELECT CONVERT(DECIMAL(5,2), (910.0 / 28)) AS average
将商作为910.0 / 28
SQL Server将保留小数精度。然后,使用两个位置使你的强制转换为小数。顺便说一下,据我所知CONVERT
在将数字转换为十进制时通常只需要两个参数。
答案 1 :(得分:1)
我们可以将此查询用于表中的动态值:
SELECT CONVERT(DECIMAL(5,2), (cast (910 as decimal))/ 28) AS average
它会给出欲望输出
答案 2 :(得分:1)
不确定这是否适用于您的数据库,但在 Trino SQL(一种数据库中间件层)中,我发现在此查询中的两个操作数中的任何一个中添加一个小数点后跟两个零(例如,{{ 1}} 或 select 910.00/23 AS average
)返回一个非整数值(select 910/23.00 AS average
,而不是 39.57
)。
在小数点后添加 3 个零 (39
) 返回 3 位小数位结果 (select 910.000/23 AS average
),依此类推。
答案 3 :(得分:0)
尝试此查询...
SELECT CAST(910 AS decimal(5,2)) / CAST(28 AS decimal(5,2)) as average
答案 4 :(得分:-1)
尝试使用此
select cast(round(910/28.0,2) as numeric(36,2)) AS average