sql >> Database teknologi >  >> RDS >> SQLite

SQLite Sum() vs Total():Hvad er forskellen?

SQLite har en funktion kaldet sum() og en anden funktion kaldet total() . Begge funktioner gør stort set det samme - de returnerer summen af ​​alle ikke-NULL-værdier i en gruppe.

Men der er en subtil forskel mellem disse to funktioner.

Forskellen er den måde, de håndterer NULL-input på.

Forskellen

Det er her, disse to funktioner adskiller sig.

Hvis der ikke er nogen ikke-NULL-input rækker:

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

Eksempel

Her er et eksempel til at demonstrere forskellen mellem SQLite sum() og total() funktioner.

SELECT 
  sum(NULL),
  total(NULL);

Resultat:

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

Den første kolonne er tom, fordi den er NULL.

Hvorfor forskellen?

Grunden til at have to funktioner, der gør det samme bortset fra denne ene forskel er, at sum() er fuldt ud i overensstemmelse med standarder. SQL-standarden kræver, at sum() funktion returnerer NULL, når dens input er NULL.

At returnere NULL kan være i overensstemmelse med standarder, men det er ikke særlig nyttigt, hvis du forventer et nummer.

total() funktion er derfor blevet leveret som et mere nyttigt alternativ til sum() .

Du kan vælge, hvilken funktion du foretrækker at bruge, afhængigt af hvordan du vil have funktionen til at håndtere NULL-værdier (og hvor standard-kompatibel du foretrækker at være).

Din beslutning kan også være påvirket af, hvor bærbar du ønsker, at din kode skal være. sum() ser ud til at være mere almindeligt brugt funktionsnavn i andre større DBMS'er.


  1. Masseindsæt felter med fast bredde

  2. Er det muligt at køre et SQLPLUS script på en fil kodet som UTF-8 med BOM

  3. Oracle skelner ikke mellem nul og tomme strenge?

  4. SQL Server svarende til MySQL enum datatype?