TSQL-moyenne de toutes les valeurs d'une colonne qui ne sont pas nulles

je suis en train de rédiger un rapport et je cherche à obtenir la valeur moyenne d'une colonne d'âge. Le problème est que toutes les rangées n'ont pas d'âge.

si les valeurs pour la colonne sont 0 2 4 je voudrais que 3 soient retournées, pas 2. Je ne peux pas simplement exclure les lignes zéro avec un où comme j'utilise en utilisant d'autres colonnes dans ces lignes. Existe-t-il une fonction de type AvgIfNotZero?

18
demandé sur Kyle Brandt 2011-01-20 22:43:26

2 réponses

SELECT

    AVG (CASE WHEN Value <> 0 THEN Value ELSE NULL END)
    ....

AVG ne tiendra pas compte des valeurs nulles. Ou ce

    AVG (NULLIF(Value, 0))
40
répondu gbn 2011-01-20 19:46:57

, ( Sélectionnez AVG( a) à partir de

        (
        SELECT NULLIF([Column1], 0)
            UNION ALL
        SELECT  NULLIF([Column2], 0)
            UNION ALL
        SELECT  NULLIF([Column3], 0)
            UNION ALL
        SELECT  NULLIF([Column4], 0)
        ) T (a)
    ) AS [4 Column Average]
0
répondu Milo Woodward 2018-03-08 12:30:54