I SQLite er total()
funktion returnerer summen af alle ikke-NULL værdier i en gruppe.
Hvis der ikke er nogen ikke-NULL-værdier, returnerer det 0,0.
Denne funktion ligner sum()
funktion, undtagen i den måde, den håndterer NULL-input. Når der ikke er nogen ikke-NULL værdier, så sum()
returnerer NULL (i stedet for 0,0 som total()
funktion returnerer).
Eksempel
Overvej følgende 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
Vi kan bruge total()
funktion for at få en total af priserne.
SELECT total(Price) FROM Products;
Resultat:
738.22
Selvom den sidste rækkes pris er NULL, er total()
funktionen kan håndtere det, fordi den tilføjer alle ikke-NULL-værdier og ignorerer NULL-værdien.
Alle NULL-værdier
Hvis der ikke er nogen ikke-NULL værdier, så er resultatet 0,0.
SELECT total(Price)
FROM Products
WHERE ProductId = 5;
Resultat:
0.0
Det er her total()
og sum()
afvige. I dette tilfælde sum()
ville have returneret NULL.
total()
funktion returnerer altid en flydende kommaværdi.
Husk, at dette dog ikke er i overensstemmelse med SQL-standarden. Hvis du vil bruge standardkompatibel kode, skal du bruge sum()
.
Få summen af en delmængde
Her er et andet eksempel, der bruger en WHERE
klausul for at returnere en delmængde af tabellen.
SELECT total(Price)
FROM Products
WHERE ProductId > 2;
Resultat:
209.27
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 total(Price)
FROM Products
WHERE Price < 150;
Resultat:
348.77