web-dev-qa-db-ja.com

SQL AVG intを返す

私のクエリの1つで、AVG関数がintを返しているようです。

select ..., AVG(e.employee_level)avg_level

浮動小数点値を返すにはどうすればよいですか?キャストしてみましたが、avg_levelの行はすべて整数のままでした。

26

このようにしてみてください:

AVG(Cast(e.employee_level as Float)) as avg_level

また、私は this トピックを見つけましたが、別のアプローチを見つけることができますが、それを使用せず、うまく機能するかどうか正確にわかりません。

42
Simon Dorociak

キャストはより確実ですが、...AVG(1.0 * e.employee_level)...もそれを行う可能性があり、読みやすくなります。

1
Philip Kelley

返されるAVGの型は、関数に渡される式の評価された型によって異なります。

enter image description here

たとえば、結果をfloatにする場合は、列または式のタイプがfloatであることを確認する必要があります。

0
gotqn