SQLite ha una funzione chiamata sum()
e un'altra funzione chiamata total()
. Entrambe le funzioni fanno più o meno la stessa cosa:restituiscono la somma di tutti i valori non NULL in un gruppo.
Ma c'è una sottile differenza tra queste due funzioni.
La differenza sta nel modo in cui gestiscono gli input NULL.
La differenza
Ecco dove differiscono queste due funzioni.
Se non sono presenti righe di input non NULL:
sum()
restituisce NULLtotal()
restituisce 0,0
Esempio
Ecco un esempio per dimostrare la differenza tra SQLite sum()
e total()
funzioni.
SELECT
sum(NULL),
total(NULL);
Risultato:
sum(NULL) total(NULL) ---------- ----------- 0.0
La prima colonna è vuota, perché è NULL.
Perché la differenza?
Il motivo per avere due funzioni che fanno la stessa cosa tranne per questa differenza è che, sum()
è completamente conforme agli standard. Lo standard SQL richiede che sum()
la funzione restituisce NULL quando il suo input è NULL.
La restituzione di NULL potrebbe essere conforme agli standard, ma non è particolarmente utile se ti aspetti un numero.
Il total()
La funzione è stata quindi fornita come alternativa più utile a sum()
.
Puoi scegliere quale funzione preferisci utilizzare, a seconda di come desideri che la funzione gestisca i valori NULL (e di come preferisci essere conforme agli standard).
La tua decisione potrebbe anche essere influenzata dalla portabilità del tuo codice. sum() sembra essere il nome della funzione più comunemente usato in altri importanti DBMS.