SQLite tiene una función llamada sum()
y otra función llamada total()
. Ambas funciones hacen más o menos lo mismo:devuelven la suma de todos los valores que no son NULL en un grupo.
Pero hay una sutil diferencia entre estas dos funciones.
La diferencia está en la forma en que manejan las entradas NULL.
La diferencia
Aquí es donde estas dos funciones difieren.
Si no hay filas de entrada que no sean NULL:
sum()
devuelve NULLtotal()
devuelve 0.0
Ejemplo
Aquí hay un ejemplo para demostrar la diferencia entre SQLite sum()
y total()
funciones.
SELECT
sum(NULL),
total(NULL);
Resultado:
sum(NULL) total(NULL) ---------- ----------- 0.0
La primera columna está en blanco porque es NULL.
¿Por qué la diferencia?
La razón de tener dos funciones que hacen lo mismo excepto por esta única diferencia es que, sum()
es totalmente compatible con los estándares. El estándar SQL requiere que sum()
función devuelve NULL cuando su entrada es NULL.
Devolver NULL puede cumplir con los estándares, pero no es particularmente útil si espera un número.
El total()
por lo tanto, la función se ha proporcionado como una alternativa más útil a sum()
.
Puede elegir qué función prefiere usar, dependiendo de cómo desea que la función trate los valores NULL (y qué tan compatible con los estándares prefiere ser).
Su decisión también puede verse influenciada por cuán portátil desea que sea su código. sum() parece ser el nombre de función más utilizado en otros DBMS importantes.