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

Como funciona o SQLite Total()


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