web-dev-qa-db-fra.com

SQL AVG retournant un int

Dans l'une de mes requêtes, il apparaît que la fonction AVG renvoie un int. 

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

Comment puis-je le faire renvoyer des valeurs en virgule flottante? J'ai essayé de le lancer, mais toutes mes lignes pour avg_level étaient toujours des entiers.

21
CodeKingPlusPlus

Essayez de le faire comme ça:

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

Aussi, j'ai trouvé this sujet où vous pouvez trouver une autre approche, mais je ne l'ai pas utilisée et je ne sais pas si cela fonctionne ou non.

35
Simon Dorociak

Le casting est plus sûr, mais ...AVG(1.0 * e.employee_level)... pourrait le faire aussi et être plus lisible.

1
Philip Kelley

Le type retourné de AVG dépend du type évalué de l'expression transmise à la fonction.

 enter image description here

Par exemple, si vous souhaitez que votre résultat soit float, vous devez vous assurer que votre type de colonne ou d'expression est float.

0
gotqn