In SQLite is de total()
functie retourneert de som van alle niet-NULL-waarden in een groep.
Als er geen niet-NULL-waarden zijn, wordt 0,0 geretourneerd.
Deze functie is vergelijkbaar met de sum()
functie, behalve in de manier waarop het omgaat met NULL-invoer. Als er geen niet-NULL-waarden zijn, dan sum()
geeft NULL terug (in plaats van 0.0 zoals de total()
functie keert terug).
Voorbeeld
Bekijk de volgende tabel.
SELECT * FROM Products;
Resultaat:
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
We kunnen de total()
. gebruiken functie om een totaal van de prijzen te krijgen.
SELECT total(Price) FROM Products;
Resultaat:
738.22
Ook al is de prijs van de laatste rij NULL, de total()
functie kan dat aan, omdat het alle niet-NULL-waarden optelt en de NULL-waarde negeert.
Alle NULL-waarden
Als er geen niet-NULL-waarden zijn, is het resultaat 0.0.
SELECT total(Price)
FROM Products
WHERE ProductId = 5;
Resultaat:
0.0
Dit is waar total()
en sum()
verschillen. In dit geval sum()
NULL zou hebben geretourneerd.
De total()
functie retourneert altijd een drijvende-kommawaarde.
Houd er echter rekening mee dat dit niet voldoet aan de SQL-standaard. Als u standaard compatibele code wilt gebruiken, gebruikt u sum()
.
Het totaal van een subset ophalen
Hier is nog een voorbeeld dat een WHERE
. gebruikt clausule om een subset van de tabel te retourneren.
SELECT total(Price)
FROM Products
WHERE ProductId > 2;
Resultaat:
209.27
Deze keer voegt het niet-NULL-waarden toe, dus ik krijg een niet-NULL-resultaat.
Hier is er nog een die filtert op dezelfde kolom die ik toevoeg.
SELECT total(Price)
FROM Products
WHERE Price < 150;
Resultaat:
348.77