web-dev-qa-db-fra.com

Est-il prudent d'utiliser SUM () sans ISNULL ()

J'essaye donc la performance d'un SP. J'ai un doute dans mon esprit à propos de SUM et ISNULL. Quand je résume une colonne, dois-je utiliser ISNULL? Est-il sûr d'utiliser SUM () sans ISNULL? Mon exemple est ci-dessous

SUM(ISNULL(COL1,0))

Comme ISNULL coûte cher, j'ai l'intention d'utiliser SUM sans ISNULL comme ci-dessous

SUM(COL1)

J'ai fait de petits tests et je ne pouvais pas voir les résultats

13
Arif YILMAZ

Oui c'est sûr. Vous pouvez utiliser Sum sans gérer la valeur NULL. Vous pouvez également vérifier cela.

Vous pouvez utiliser comme ça aussi.

ISNULL (SUM (COL1), 0).

Renvoie la somme de toutes les valeurs, ou uniquement les valeurs DISTINCT, dans l'expression. SUM ne peut être utilisé qu'avec des colonnes numériques. Les valeurs nulles sont ignorées.

Pour référence: https://msdn.Microsoft.com/en-IN/library/ms187810.aspx

12
Sandeep Kumar

Mis à jour

Si vous avez [1, 2, NULL, 5] dans 4 colonnes, le résultat sera 8.

Cependant, il n'est pas prudent d'utiliser SUM () sans vérifier NULLS dans de nombreux cas.

Vous pouvez recevoir la valeur null si aucun contenu ne correspond à une clause donnée. Et si vous utilisez cette valeur SUMMED dans une autre fonction, vous vous inquiétez peut-être.

Plus de détails ici: https://msdn.Microsoft.com/en-GB/library/ms187810.aspx

Consultez également la méthode COALESCE https://msdn.Microsoft.com/en-IN/library/ms190349.aspx

PS: Consultez également cet article - Ma requête Select SUM renvoie null. Il devrait retourner 0

Voici 3 images qui montre sans vérifier pour NULL il renvoie NULL et non 0.

SUM avec ISNULL CHECK enter image description here

SUM sans vérification ISNULL

 enter image description here

SUM avec COALESCE enter image description here

3
vohrahul

Il n'est pas obligatoire d'utiliser NULL et COALESCE lors de l'exécution de SUM car SUM ignore toujours les valeurs null.

Référez-vous au lien: https://msdn.Microsoft.com/en-IN/library/ms187810.aspx pour plus d'informations.

3
Ragesh

Il est préférable d’utiliser la méthode COALESCE avant l’agrégation SUM.

1
Uday Prasanna N