SQLite sum()
funktion returnerer summen af alle ikke-NULL værdier i en gruppe.
Hvis der ikke er nogen ikke-NULL-værdier, returnerer den NULL.
Denne funktion giver dig grundlæggende mulighed for at tilføje alle værdierne i et resultatsæt eller en tabel.
Eksempel
Her er et eksempel for at demonstrere dets brug.
SELECT sum(Price) FROM Products;
Resultat:
738.22
Dette eksempel er sandsynligvis meningsløst, hvis du ikke kan se de faktiske værdier i tabellen.
Her er en forespørgsel, der returnerer alle rækker i den tabel.
SELECT * FROM Products;
Resultat:
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
Så sum()
funktionen tilføjede simpelthen alle værdierne i Pris kolonne.
Bemærk, at den sidste rækkes pris er NULL. Det er ok. sum()
funktion tilføjer simpelthen alle ikke-NULL værdier.
NULL-værdier
Hvis der ikke er nogen ikke-NULL-værdier, er resultatet NULL.
SELECT sum(Price)
FROM Products
WHERE ProductId = 5;
Resultat:
(Det er med vilje tomt, fordi det returnerede NULL).
Dette er forskelligt fra hvordan SQLite total()
funktion omhandler NULL-værdier (den returnerer 0,0). Begge sum()
og total()
gør det samme, bortset fra denne forskel.
Mindre resultatsæt
Det første eksempel tilføjede alle rækker i tabellen. Men det behøver ikke at være hele bordet. Som det ses i "NULL"-eksemplet, kan du også bruge en WHERE
klausul for at tilføje et undersæt af værdier i tabellen.
Her er et andet eksempel, der bruger en WHERE
klausul.
SELECT sum(Price)
FROM Products
WHERE ProductId < 3;
Resultat:
528.95
Denne gang tilføjer det ikke-NULL-værdier, så jeg får et ikke-NULL-resultat.
Her er en anden, der filtrerer efter den samme kolonne, som jeg tilføjer.
SELECT sum(Price)
FROM Products
WHERE Price > 100;
Resultat:
648.95
Input uden heltal
Hvis et input hverken er et heltal eller NULL, så sum()
returnerer en flydende kommaværdi, som kan være en tilnærmelse til den sande sum.
Du kan få nogle uventede resultater i sådanne tilfælde.
Nedenfor er et eksempel, der forsøger at tilføje en masse faxnumre.
Lad os først se på listen over faxnumre.
SELECT Fax FROM Customer
WHERE Fax IS NOT NULL;
Resultat:
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
Her er hvad der sker, hvis jeg prøver at tilføje dem.
SELECT sum(Fax)
FROM Customer;
Resultat:
701.0
I dette tilfælde ser den ud til at have tilføjet alle præfikser.
Her er, hvad der sker, hvis jeg bruger sum()
på en kolonne af strenge.
SELECT sum(ProductName)
FROM Products;
Resultat:
0.0
Det SÆRLIGE søgeord
Du kan tilføje DISTINCT
nøgleord for kun at tilføje forskellige værdier. For at gøre dette, brug sum(DISTINCT X)
hvor X
er kolonnenavnet.
Se Sådan tilføjer du kun de distinkte værdier med SQLite Sum() for et eksempel.