我正在研究Server。我有一个具有int列HalfTimeAwayGoals的表,我试图用以下代码获取AVG:
select
CAST(AVG(HalfTimeAwayGoals) as decimal(4,2))
from
testtable
where
AwayTeam = 'TeamA'结果我得到了0.00。但正确的结果应该是0.55。
你知道出了什么问题吗?
发布于 2016-01-03 12:56:02
select
AVG(CAST(HalfTimeAwayGoals as decimal(4,2)))
from
testtable
where
AwayTeam = 'TeamA'发布于 2016-01-03 13:27:28
如果字段HalfTimeAwayGoals是整数,则avg函数将执行整数平均值。也就是说,结果是0或1,但不能介于两者之间。
解决方案是将值转换为数字。我经常这样做,只需乘以1.0:
select CAST(AVG(HalfTimeAwayGoals * 1.0) as decimal(4, 2))
from testtable
where AwayTeam = 'TeamA';请注意,如果在平均值之前将数据转换为小数点,则结果将不需要有4的刻度和2的精度。
发布于 2016-01-04 21:59:47
你能试着把整数除以1.00转换成十进制吗?
select
AVG(HalfTimeAwayGoals/1.00) as average
from
testtable
where
AwayTeam = 'TeamA'https://stackoverflow.com/questions/34576534
复制相似问题