2016-05-18 17 views
9

Sto cercando di ottenere le prestazioni di un SP. Ho un dubbio nella mia mente su SUM e ISNULL. Quando riassumo una colonna, dovrei usare ISNULL? È SICURO usare SUM() senza ISNULL. Il mio esempio è sottoÈ sicuro usare SUM() senza ISNULL()

SUM(ISNULL(COL1,0)) 

Dal ISNULL costa un sacco, ho intenzione di usare somma senza ISNULL come qui di seguito

SUM(COL1) 

Ho fatto alcune piccole prove e non potevo vedere i risultati

+3

Controllare il mio post su 'NULL vs 0': http://blog.devart.com/what-is-faster-inside-stream-aggregate-hash-match.html – Devart

risposta

7

Sì, è sicuro. È possibile utilizzare Sum senza gestire il valore NULL. Puoi anche verificarlo.

È possibile utilizzare anche questo.

ISNULL (SOMMA (COL1), 0).

Restituisce la somma di tutti i valori, o solo i valori DISTINCT, nell'espressione. SUM può essere utilizzato solo con colonne numeriche. I valori nulli vengono ignorati.

Per Riferimento: https://msdn.microsoft.com/en-IN/library/ms187810.aspx

+0

Come già detto nella mia risposta. Non puoi Refer - http://stackoverflow.com/questions/1088648/sql-sum-3-columns-when-one-column-has-a-null-value – vohrahul

+0

In questa domanda ci sono 3 diverse colonne. Dopo aver usato la funzione Sum, aggiunge altre colonne. In questa domanda suggeriscono di utilizzare ISNULL per la colonna non per SUM ... –

+0

Ho verificato che è possibile leggere questo da MSDN https://msdn.microsoft.com/en-IN/library/ms187810.aspx –

1

Aggiornato

Se si dispone di [1, 2, NULL, 5] in 4 colonne, fornirà l'output come 8.

Tuttavia, non è sicuro utilizzare SUM() senza verificare NULLS in molti casi.

È possibile ricevere un valore null quando non è presente contenuto corrispondente per una determinata clausola. E se stai usando questo valore SUMMED in un'altra funzione, questo potrebbe essere un motivo di preoccupazione.

Maggiori dettagli qui: https://msdn.microsoft.com/en-GB/library/ms187810.aspx

Leggi anche le metodo COALESCE https://msdn.microsoft.com/en-IN/library/ms190349.aspx

PS: Verificate anche questo post - My Select SUM query returns null. It should return 0

Qui ci sono 3 immagini che mostra senza controllare per NULL restituisce NULL e non 0.

SUM con CHECK ISNULL enter image description here

somma senza ISNULL CONTROLLO

enter image description here

SOMMA con COALESCE enter image description here

+0

Sum può essere utilizzato senza gestire valori NULL @ vohrahul –

+0

@SandeepKumar - Si prega di fare riferimento a questo post: http://stackoverflow.com/questions/1088648/sql-sum-3-columns-when-column-has-a-null-value È necessario controllare per È ZERO. Oppure si riceve nulla – vohrahul

+0

I valori nulli sulle colonne aggregate vengono ignorati da sum(), ma alla fine si potrebbe richiedere zero ad es. coalesce (sum (column1)). Collocare coalesce o non essere all'interno della somma è uno spreco. –

1

è più opportuno utilizzare il metodo COALESCE prima dell'aggregazione SUM.

Problemi correlati