SQLite tem uma função chamada
sum()
e outra função chamada total()
. Ambas as funções fazem praticamente a mesma coisa – elas retornam a soma de todos os valores não NULL em um grupo. Mas há uma diferença sutil entre essas duas funções.
A diferença está na maneira como eles lidam com entradas NULL.
A diferença
Aqui é onde essas duas funções diferem.
Se não houver linhas de entrada não NULL:
sum()
retorna NULLtotal()
retorna 0,0
Exemplo
Aqui está um exemplo para demonstrar a diferença entre o SQLite
sum()
e total()
funções. SELECT
sum(NULL),
total(NULL);
Resultado:
sum(NULL) total(NULL) ---------- ----------- 0.0
A primeira coluna está em branco, porque é NULL.
Por que a diferença?
A razão para ter duas funções que fazem a mesma coisa, exceto por esta diferença, é que,
sum()
é totalmente compatível com os padrões. O padrão SQL requer que o sum()
função retorna NULL quando sua entrada é NULL. Retornar NULL pode ser compatível com os padrões, mas não é particularmente útil se você estiver esperando um número.
O
total()
função foi fornecida como uma alternativa mais útil para sum()
. Você pode escolher qual função prefere usar, dependendo de como deseja que a função lide com valores NULL (e de quão compatível com os padrões você prefere ser).
Sua decisão também pode ser influenciada por quão portátil você deseja que seu código seja. sum() parece ser o nome de função mais comumente usado em outros DBMSs importantes.