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

Wie SQLite Total() funktioniert

In SQLite das total() Die Funktion gibt die Summe aller Nicht-NULL-Werte in einer Gruppe zurück.

Wenn es keine Nicht-NULL-Werte gibt, wird 0,0 zurückgegeben.

Diese Funktion ähnelt der sum() Funktion, außer in der Art und Weise, wie NULL-Eingaben behandelt werden. Wenn es keine Nicht-NULL-Werte gibt, dann sum() gibt NULL zurück (statt 0.0 wie total()). Funktion gibt zurück).

Beispiel

Betrachten Sie die folgende Tabelle.

SELECT * FROM Products;

Ergebnis:

ProductId   ProductName            Price     
----------  ---------------------  ----------
1           Blue Widgets (6 Pack)  389.45    
2           Widget Holder          139.5     
3           Widget Opener          89.27     
4           Foobar Set             120.0     
5           Red Widget                    

Wir können total() verwenden Funktion, um die Summe der Preise zu erhalten.

SELECT total(Price) FROM Products;

Ergebnis:

738.22

Obwohl der Preis der letzten Zeile NULL ist, ist der total() Die Funktion kann damit umgehen, da sie alle Nicht-NULL-Werte hinzufügt und den NULL-Wert ignoriert.

Alle NULL-Werte

Wenn es keine Nicht-NULL-Werte gibt, ist das Ergebnis 0,0.

SELECT total(Price) 
FROM Products
WHERE ProductId = 5;

Ergebnis:

0.0      

Hier ist total() und sum() sich unterscheiden. In diesem Fall sum() hätte NULL zurückgegeben.

Die total() Die Funktion gibt immer einen Fließkommawert zurück.

Beachten Sie jedoch, dass dies nicht dem SQL-Standard entspricht. Wenn Sie standardkonformen Code verwenden möchten, verwenden Sie sum() .

Ermittle die Summe einer Teilmenge

Hier ist ein weiteres Beispiel, das ein WHERE verwendet -Klausel, um eine Teilmenge der Tabelle zurückzugeben.

SELECT total(Price) 
FROM Products
WHERE ProductId > 2;

Ergebnis:

209.27

Dieses Mal werden Nicht-NULL-Werte hinzugefügt, sodass ich ein Nicht-NULL-Ergebnis erhalte.

Hier ist eine weitere, die nach derselben Spalte filtert, die ich hinzufüge.

SELECT total(Price) 
FROM Products
WHERE Price < 150;

Ergebnis:

348.77