SQL AVG возвращает int

в одном из моих запросов выясняется, что AVG функция возвращает int.

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

как заставить его возвращать значения с плавающей запятой? Я попытался бросить его, но все мои строки для avg_level были еще целые.

3 ответов


попробуйте сделать так:

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

также я нашел этой тема, где вы можете найти несколько другой подход, но я не использовал его и не знаю точно, работает ли или нет.


кастинг более уверен, но ...AVG(1.0 * e.employee_level)... может сделать это также, и может быть более разборчивыми.


возвращаемый тип AVG зависит от вычисляемого типа выражения, переданного функции.

enter image description here

например, если вы хотите, чтобы ваш результат был float, вам нужно убедиться, что ваш столбец или тип выражения float.