我正在使用SQL Server。我有一個具有int
列HalfTimeAwayGoals
一個表,我想這個代碼來獲取AVG
:AVG功能不起作用
select
CAST(AVG(HalfTimeAwayGoals) as decimal(4,2))
from
testtable
where
AwayTeam = 'TeamA'
我得到的結果是0.00。但正確的結果應該是0.55。
你知道怎麼回事嗎?
我正在使用SQL Server。我有一個具有int
列HalfTimeAwayGoals
一個表,我想這個代碼來獲取AVG
:AVG功能不起作用
select
CAST(AVG(HalfTimeAwayGoals) as decimal(4,2))
from
testtable
where
AwayTeam = 'TeamA'
我得到的結果是0.00。但正確的結果應該是0.55。
你知道怎麼回事嗎?
select
AVG(CAST(HalfTimeAwayGoals as decimal(4,2)))
from
testtable
where
AwayTeam = 'TeamA'
在MySQL
SELECT AVG(integerfield) FROM table
給了我4個小數點。
如果我做
SELECT AVG(integerfield/1.00) FROM table
我拿到8個小數點。
你的答案是針對MySQL;問題是SQL Server,並沒有回答問題 –
是的,我知道,但我曾經在各種數據庫上做/1.00 OR /1.0000技巧來完成這項工作。沒有權限訪問MS-SQL來嘗試它,分區會將整數更改爲十進制。 –
好的 - 把它放在答案中,我可以刪除投票。 –
如果字段HalfTimeAwayGoals
是一個整數,那麼avg
函數會執行整數平均值。也就是說,結果是0或1,但不能介於兩者之間。
解決方案是將該值轉換爲數字。我經常這樣做只是由1.0乘以:
select CAST(AVG(HalfTimeAwayGoals * 1.0) as decimal(4, 2))
from testtable
where AwayTeam = 'TeamA';
請注意,如果你這樣做之前轉換爲十進制平均,結果將沒有必要有4規模和2
精度您可以嘗試除以1.00來將整數轉換爲十進制嗎?
select
AVG(HalfTimeAwayGoals/1.00) as average
from
testtable
where
AwayTeam = 'TeamA'
我在各種數據庫上使用了/1.00 OR /1.0000技巧來完成這項工作。不幸的是,我沒有訪問MS-SQL來嘗試它。整數除以1.00會將整數更改爲十進制。
SELECT AVG(integerfield/1.00) FROM table
嘗試'AVG(CAST(HalfTimeAwayGoals爲十進制(4,2))' –
如果'HalfTimeAwayGoals'是一個整數類型的SQL Server將使用整數數學 – Serpiton
我們證明您是立足樣本數據您的預計結果在! –