SQLite
 sql >> Database >  >> RDS >> SQLite

Come funziona SQLite Sum()

Il sum() di SQLite La funzione restituisce la somma di tutti i valori non NULL in un gruppo.

Se non sono presenti valori diversi da NULL, restituisce NULL.

Questa funzione consente sostanzialmente di sommare tutti i valori in un set di risultati o in una tabella.

Esempio

Ecco un esempio per dimostrarne l'utilizzo.

SELECT sum(Price) FROM Products;

Risultato:

738.22

Questo esempio è probabilmente privo di significato se non riesci a vedere i valori effettivi nella tabella.

Ecco una query che restituisce tutte le righe in quella tabella.

SELECT * FROM Products;

Risultato:

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                    

Quindi il sum() la funzione ha semplicemente aggiunto tutti i valori nel Prezzo colonna.

Si noti che il prezzo dell'ultima riga è NULL. Va bene. Il sum() la funzione aggiunge semplicemente tutti i valori non NULL.

Valori NULL

Se non sono presenti valori diversi da NULL, il risultato è NULL.

SELECT sum(Price) 
FROM Products
WHERE ProductId = 5;

Risultato:

      

(Questo è intenzionalmente vuoto, perché ha restituito NULL).

Questo è diverso da come SQLite total() la funzione si occupa di valori NULL (restituisce 0.0). Entrambi sum() e total() fare la stessa cosa, a parte questa differenza.

Set di risultati più piccolo

Il primo esempio ha aggiunto tutte le righe nella tabella. Ma non deve essere l'intero tavolo. Come visto nell'esempio "NULL", puoi anche usare un WHERE clausola per aggiungere un sottoinsieme di valori nella tabella.

Ecco un altro esempio che utilizza un WHERE clausola.

SELECT sum(Price) 
FROM Products
WHERE ProductId < 3;

Risultato:

528.95

Questa volta aggiunge valori non NULL, quindi ottengo un risultato non NULL.

Eccone un altro che filtra in base alla stessa colonna che sto aggiungendo.

SELECT sum(Price) 
FROM Products
WHERE Price > 100;

Risultato:

648.95

Ingressi non interi

Se qualsiasi input non è né un numero intero né NULL, allora sum() restituisce un valore in virgola mobile che potrebbe essere un'approssimazione della somma vera.

In questi casi potresti ottenere risultati imprevisti.

Di seguito è riportato un esempio che tenta di aggiungere un gruppo di numeri di fax.

Per prima cosa, diamo un'occhiata all'elenco dei numeri di fax.

SELECT Fax FROM Customer 
WHERE Fax IS NOT NULL;

Risultato:

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 

Ora ecco cosa succede se provo a sommarli.

SELECT sum(Fax) 
FROM Customer;

Risultato:

701.0 

In questo caso sembra aver aggiunto tutti i prefissi.

Ecco cosa succede se utilizzo sum() su una colonna di stringhe.

SELECT sum(ProductName) 
FROM Products;

Risultato:

0.0

La parola chiave DISTINCT

Puoi aggiungere il DISTINCT parola chiave per aggiungere solo valori distinti. Per fare ciò, usa sum(DISTINCT X) dove X è il nome della colonna.

Vedi come aggiungere solo i valori distinti con SQLite Sum() per un esempio.