SQLite
 sql >> Base de Dados >  >> RDS >> SQLite

SQLite Sum() vs Total():Qual é a diferença?


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 NULL
  • total() 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.