SQLite heeft een functie genaamd sum()
en een andere functie genaamd total()
. Beide functies doen vrijwel hetzelfde:ze retourneren de som van alle niet-NULL-waarden in een groep.
Maar er is een subtiel verschil tussen deze twee functies.
Het verschil zit in de manier waarop ze omgaan met NULL-invoer.
Het verschil
Hier verschillen deze twee functies.
Als er geen niet-NULL invoerrijen zijn:
sum()
geeft NULL terugtotal()
geeft 0,0 terug
Voorbeeld
Hier is een voorbeeld om het verschil te demonstreren tussen de SQLite sum()
en total()
functies.
SELECT
sum(NULL),
total(NULL);
Resultaat:
sum(NULL) total(NULL) ---------- ----------- 0.0
De eerste kolom is leeg, omdat deze NULL is.
Waarom het verschil?
De reden voor het hebben van twee functies die hetzelfde doen, behalve dit ene verschil, is dat sum()
voldoet volledig aan de normen. De SQL-standaard vereist dat de sum()
functie retourneert NULL wanneer de invoer NULL is.
Het retourneren van NULL is mogelijk in overeenstemming met de normen, maar het is niet bijzonder handig als u een getal verwacht.
De total()
functie is daarom geleverd als een nuttiger alternatief voor sum()
.
Je kunt kiezen welke functie je wilt gebruiken, afhankelijk van hoe je wilt dat de functie omgaat met NULL-waarden (en hoe standaard je wilt zijn).
Uw beslissing kan ook worden beïnvloed door hoe draagbaar u wilt dat uw code is. sum() lijkt vaker de functienaam te zijn in andere belangrijke DBMS'en.