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.