sql >> Database >  >> RDS >> SQLite

SQLite Sum() vs Total():wat is het verschil?

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 terug
  • total() 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.


  1. Modellering van een database voor het registreren van verkopen. Deel 1

  2. 7 manieren om dubbele rijen in SQL Server te vinden terwijl u een primaire sleutel negeert

  3. Lijst met opgeslagen functies die verwijzen naar een tabel in PostgreSQL

  4. Een logging-handler maken om verbinding te maken met Oracle?