I SQLite, total()
funktion returnerar summan av alla icke-NULL-värden i en grupp.
Om det inte finns några icke-NULL-värden, returnerar det 0.0.
Denna funktion liknar sum()
funktion, förutom hur den hanterar NULL-ingångar. När det inte finns några icke-NULL-värden, sedan sum()
returnerar NULL (istället för 0.0 som total()
funktion returnerar).
Exempel
Tänk på följande tabell.
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 använda total()
funktion för att få en summa av priserna.
SELECT total(Price) FROM Products;
Resultat:
738.22
Även om den sista radens pris är NULL, är total()
funktionen kan hantera det, eftersom den lägger till alla icke-NULL-värden och ignorerar NULL-värdet.
Alla NULL-värden
Om det inte finns några icke-NULL-värden blir resultatet 0.0.
SELECT total(Price)
FROM Products
WHERE ProductId = 5;
Resultat:
0.0
Det är här total()
och sum()
skilja sig. I det här fallet, sum()
skulle ha returnerat NULL.
total()
funktion returnerar alltid ett flyttalsvärde.
Tänk på att detta inte överensstämmer med SQL-standarden. Om du vill använda standardkompatibel kod, använd sum()
.
Få summan av en delmängd
Här är ett annat exempel som använder en WHERE
klausul för att returnera en delmängd av tabellen.
SELECT total(Price)
FROM Products
WHERE ProductId > 2;
Resultat:
209.27
Den här gången lägger det till icke-NULL-värden, så jag får ett icke-NULL-resultat.
Här är en annan som filtrerar efter samma kolumn som jag lägger till.
SELECT total(Price)
FROM Products
WHERE Price < 150;
Resultat:
348.77