SQLite
 sql >> Datenbank >  >> RDS >> SQLite

SQLite Sum() vs. Total():Was ist der Unterschied?

SQLite hat eine Funktion namens sum() und eine weitere Funktion namens total() . Beide Funktionen machen so ziemlich dasselbe – sie geben die Summe aller Nicht-NULL-Werte in einer Gruppe zurück.

Aber es gibt einen feinen Unterschied zwischen diesen beiden Funktionen.

Der Unterschied liegt in der Art und Weise, wie sie mit NULL-Eingaben umgehen.

Der Unterschied

Hier unterscheiden sich diese beiden Funktionen.

Wenn es keine Nicht-NULL-Eingabezeilen gibt:

  • sum() gibt NULL zurück
  • total() gibt 0,0 zurück

Beispiel

Hier ist ein Beispiel, um den Unterschied zwischen SQLite sum() zu demonstrieren und total() Funktionen.

SELECT 
  sum(NULL),
  total(NULL);

Ergebnis:

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

Die erste Spalte ist leer, weil sie NULL ist.

Warum der Unterschied?

Der Grund dafür, dass es zwei Funktionen gibt, die bis auf diesen einen Unterschied dasselbe tun, ist sum() ist vollständig standardkonform. Der SQL-Standard erfordert, dass sum() Funktion gibt NULL zurück, wenn ihre Eingabe NULL ist.

Die Rückgabe von NULL ist möglicherweise standardkonform, aber nicht besonders nützlich, wenn Sie eine Zahl erwarten.

Die total() Die Funktion wurde daher als nützlichere Alternative zu sum() bereitgestellt .

Sie können wählen, welche Funktion Sie bevorzugen, je nachdem, wie die Funktion mit NULL-Werten umgehen soll (und wie standardkonform Sie sein möchten).

Ihre Entscheidung kann auch davon beeinflusst werden, wie portabel Ihr Code sein soll. sum() scheint ein häufiger verwendeter Funktionsname in anderen großen DBMS zu sein.