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