sql >> Databasteknik >  >> RDS >> SQLite

SQLite Sum() vs Total():Vad är skillnaden?

SQLite har en funktion som heter sum() och en annan funktion som heter total() . Båda funktionerna gör ungefär samma sak – de returnerar summan av alla icke-NULL-värden i en grupp.

Men det finns en subtil skillnad mellan dessa två funktioner.

Skillnaden ligger i hur de hanterar NULL-inmatningar.

Skillnaden

Det är här dessa två funktioner skiljer sig åt.

Om det inte finns några rader som inte är NULL:

  • sum() returnerar NULL
  • total() returnerar 0,0

Exempel

Här är ett exempel för att visa skillnaden mellan SQLite sum() och total() funktioner.

SELECT 
  sum(NULL),
  total(NULL);

Resultat:

sum(NULL)   total(NULL)
----------  -----------
            0.0        

Den första kolumnen är tom eftersom den är NULL.

Varför skillnaden?

Anledningen till att ha två funktioner som gör samma sak förutom den här skillnaden är att sum() är helt överensstämmande med standarder. SQL-standarden kräver att sum() funktion returnerar NULL när dess indata är NULL.

Att returnera NULL kan vara standardkompatibelt, men det är inte särskilt användbart om du förväntar dig ett nummer.

total() funktion har därför tillhandahållits som ett mer användbart alternativ till sum() .

Du kan välja vilken funktion du föredrar att använda, beroende på hur du vill att funktionen ska hantera NULL-värden (och hur standardkompatibel du föredrar att vara).

Ditt beslut kan också påverkas av hur portabel du vill att din kod ska vara. sum() verkar vara mer vanligt förekommande funktionsnamn i andra stora DBMS.


  1. MariaDB JSON_CONTAINS_PATH() Förklarad

  2. Hur roterar man PgBouncer-loggar i Linux/Windows?

  3. Databasdesign 101:Partitioner i MySQL

  4. returnera värde vid en position från STRING_SPLIT i SQL Server 2016