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

Como SQLite Sum() funciona


O SQLite sum() 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á NULL.

Esta função basicamente permite somar todos os valores em um conjunto de resultados ou uma tabela.

Exemplo


Aqui está um exemplo para demonstrar seu uso.
SELECT sum(Price) FROM Products;

Resultado:
738.22

Este exemplo provavelmente não fará sentido se você não puder ver os valores reais na tabela.

Aqui está uma consulta que retorna todas as linhas dessa tabela.
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                    

Então a sum() função simplesmente adicionou todos os valores no Preço coluna.

Observe que o preço da última linha é NULL. Isso está ok. A sum() função simplesmente adiciona todos os valores não NULL.

Valores NULOS


Se não houver valores não NULL, o resultado será NULL.
SELECT sum(Price) 
FROM Products
WHERE ProductId = 5;

Resultado:
      

(Isso está intencionalmente em branco, porque retornou NULL).

Isso é diferente de como o SQLite total() função lida com valores NULL (retorna 0,0). Ambos sum() e total() fazer a mesma coisa, exceto por essa diferença.

Conjunto de resultados menor


O primeiro exemplo adicionou todas as linhas na tabela. Mas não precisa ser a mesa inteira. Como visto no exemplo “NULL”, você também pode usar um WHERE cláusula para adicionar um subconjunto de valores na tabela.

Aqui está outro exemplo que usa um WHERE cláusula.
SELECT sum(Price) 
FROM Products
WHERE ProductId < 3;

Resultado:
528.95

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 sum(Price) 
FROM Products
WHERE Price > 100;

Resultado:
648.95

Entradas não inteiras


Se qualquer entrada não for um inteiro ou NULL então sum() retorna um valor de ponto flutuante que pode ser uma aproximação da soma verdadeira.

Você pode obter alguns resultados inesperados nesses casos.

Abaixo está um exemplo que tenta adicionar vários números de fax.

Primeiro, vamos ver a lista de números de fax.
SELECT Fax FROM Customer 
WHERE Fax IS NOT NULL;

Resultado:
Fax               
------------------
+55 (12) 3923-5566
+420 2 4172 5555  
+55 (11) 3033-4564
+55 (11) 3055-8131
+55 (21) 2271-7070
+55 (61) 3363-7855
+1 (780) 434-5565 
+1 (604) 688-8756 
+1 (650) 253-0000 
+1 (425) 882-8081 
+1 (212) 221-4679 
+1 (408) 996-1011 

Agora, aqui está o que acontece se eu tentar adicioná-los.
SELECT sum(Fax) 
FROM Customer;

Resultado:
701.0 

Neste caso, parece ter adicionado todos os prefixos.

Aqui está o que acontece se eu usar sum() em uma coluna de strings.
SELECT sum(ProductName) 
FROM Products;

Resultado:
0.0

A palavra-chave DISTINTA


Você pode adicionar o DISTINCT palavra-chave para adicionar apenas valores distintos. Para fazer isso, use sum(DISTINCT X) onde X é o nome da coluna.

Consulte Como adicionar apenas os valores distintos com SQLite Sum() para obter um exemplo.