SQL 舍入问题
SQL Rounding Issue
我有这个字段,我正在尝试 运行,但它不断地将答案四舍五入为 0。
(Select round(Count( TestDN.dbo.ServiceDoc.[Sender]) from TestDN.dbo.ServiceDoc where [Sender] = 'agent'),2)
/
(Select round(Count( TestDN.dbo.ServiceDoc.[Sender]) from TestDN.dbo.ServiceDoc where [Sender] = 'user'),2) as 'ServiceCount'
现在这个方程基本上应该是 3277/3369,因此得到一个小数,但我一直得到 0。我什至尝试删除圆函数并将整个方程乘以 1.00,但它给了我 0.00
即使四舍五入,计数也是数字。在除法 之后进行舍入 ,然后舍入——或者更好的是,转换为小数。
您也可以去掉这两个查询,换成一个:
(Select sum(case when [Sender] = 'agent' then 1.0 else 0.0 end) /
sum(case when [Sender] = 'user' then 1.0 else 0.0 end)
from TestDN.dbo.ServiceDoc
)
对于round()
:
round( (Select sum(case when [Sender] = 'agent' then 1.0 else 0.0 end) /
sum(case when [Sender] = 'user' then 1.0 else 0.0 end)
from TestDN.dbo.ServiceDoc
), 2
) as ServiceCount
此外,仅对字符串和列文字(常量)使用单引号。不要将它们用于列名。这会导致混乱和潜在的难以调试的错误。
我有这个字段,我正在尝试 运行,但它不断地将答案四舍五入为 0。
(Select round(Count( TestDN.dbo.ServiceDoc.[Sender]) from TestDN.dbo.ServiceDoc where [Sender] = 'agent'),2)
/
(Select round(Count( TestDN.dbo.ServiceDoc.[Sender]) from TestDN.dbo.ServiceDoc where [Sender] = 'user'),2) as 'ServiceCount'
现在这个方程基本上应该是 3277/3369,因此得到一个小数,但我一直得到 0。我什至尝试删除圆函数并将整个方程乘以 1.00,但它给了我 0.00
即使四舍五入,计数也是数字。在除法 之后进行舍入 ,然后舍入——或者更好的是,转换为小数。
您也可以去掉这两个查询,换成一个:
(Select sum(case when [Sender] = 'agent' then 1.0 else 0.0 end) /
sum(case when [Sender] = 'user' then 1.0 else 0.0 end)
from TestDN.dbo.ServiceDoc
)
对于round()
:
round( (Select sum(case when [Sender] = 'agent' then 1.0 else 0.0 end) /
sum(case when [Sender] = 'user' then 1.0 else 0.0 end)
from TestDN.dbo.ServiceDoc
), 2
) as ServiceCount
此外,仅对字符串和列文字(常量)使用单引号。不要将它们用于列名。这会导致混乱和潜在的难以调试的错误。