No SQLite, o
total()
A função retorna a soma de todos os valores não NULL em um grupo. Se não houver valores não NULL, ele retornará 0,0.
Esta função é semelhante à
sum()
função, exceto na forma como lida com entradas NULL. Quando não há valores não NULL, então sum()
retorna NULL (em vez de 0.0 como o total()
função retorna). Exemplo
Considere a tabela a seguir.
SELECT * FROM Products;
Resultado:
ProductId ProductName Price ---------- --------------------- ---------- 1 Blue Widgets (6 Pack) 389.45 2 Widget Holder 139.5 3 Widget Opener 89.27 4 Foobar Set 120.0 5 Red Widget
Podemos usar o
total()
função para obter um total dos preços. SELECT total(Price) FROM Products;
Resultado:
738.22
Mesmo que o preço da última linha seja NULL, o
total()
A função pode lidar com isso, porque adiciona todos os valores não NULL e ignora o valor NULL. Todos os valores NULOS
Se não houver valores não NULL, o resultado será 0,0.
SELECT total(Price)
FROM Products
WHERE ProductId = 5;
Resultado:
0.0
É aqui que
total()
e sum()
diferem. Neste caso, sum()
teria retornado NULL. O
total()
A função sempre retorna um valor de ponto flutuante. Tenha em mente que isso não está em conformidade com o padrão SQL. Se você quiser usar código compatível com o padrão, use
sum()
. Obter o total de um subconjunto
Aqui está outro exemplo que usa um
WHERE
cláusula para retornar um subconjunto da tabela. SELECT total(Price)
FROM Products
WHERE ProductId > 2;
Resultado:
209.27
Desta vez, está adicionando valores não NULL, então recebo um resultado não NULL.
Aqui está outro que filtra pela mesma coluna que estou adicionando.
SELECT total(Price)
FROM Products
WHERE Price < 150;
Resultado:
348.77