在我的一個查詢中,似乎AVG
函數返回一個int。SQL AVG返回一個int
select ..., AVG(e.employee_level)avg_level
如何獲取它返回浮點值?我嘗試投它,但我所有的行avg_level
仍然是整數。
在我的一個查詢中,似乎AVG
函數返回一個int。SQL AVG返回一個int
select ..., AVG(e.employee_level)avg_level
如何獲取它返回浮點值?我嘗試投它,但我所有的行avg_level
仍然是整數。
嘗試做這樣的:
AVG(Cast(e.employee_level as Float)) as avg_level
而且我發現this話題在這裏你可以找到一些另一種方法,但我沒有使用它,不知道究竟是否管用。
鑄造更確定,但...AVG(1.0 * e.employee_level)...
也可能做到這一點,並且可以更清晰。
它取決於RDBMS。 AFAIK許多RDBMS將'1.0'視爲定點NUMERIC值,而不是FLOAT。類似的效果,可能對這種情況更好,但不完全相同。出於這個原因,我傾向於在我的代碼中使用明確的CAST/CONVERT。然後你知道什麼是數據類型,而不是依賴數據類型的精度和隱式轉換。 – MatBailie
AVG()函數在整數上的行爲在ANSI標準中沒有定義。一些數據庫返回一個整數;其他數據庫返回一個float。要獲得一個浮點數,你可以使用一個明確的轉換/轉換。或者,我所做的只是乘以1.0。 –