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

Wie SQLite Sum() funktioniert

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

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

Mit dieser Funktion können Sie grundsätzlich alle Werte in einer Ergebnismenge oder einer Tabelle addieren.

Beispiel

Hier ist ein Beispiel, um die Verwendung zu demonstrieren.

SELECT sum(Price) FROM Products;

Ergebnis:

738.22

Dieses Beispiel ist wahrscheinlich bedeutungslos, wenn Sie die tatsächlichen Werte in der Tabelle nicht sehen können.

Hier ist eine Abfrage, die alle Zeilen in dieser Tabelle zurückgibt.

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                    

Also die sum() -Funktion hat einfach alle Werte im Preis hinzugefügt Spalte.

Beachten Sie, dass der Preis der letzten Zeile NULL ist. Das ist okay. Die sum() Funktion fügt einfach alle Nicht-NULL-Werte hinzu.

NULL-Werte

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

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

Ergebnis:

      

(Das ist absichtlich leer, weil es NULL zurückgegeben hat).

Dies unterscheidet sich von SQLite total() Die Funktion verarbeitet NULL-Werte (sie gibt 0,0 zurück). Beides sum() und total() dasselbe tun, bis auf diesen Unterschied.

Kleinere Ergebnismenge

Im ersten Beispiel wurden alle Zeilen in der Tabelle hinzugefügt. Es muss aber nicht der ganze Tisch sein. Wie im „NULL“-Beispiel zu sehen, können Sie auch ein WHERE verwenden -Klausel, um eine Teilmenge von Werten in der Tabelle hinzuzufügen.

Hier ist ein weiteres Beispiel, das ein WHERE verwendet Klausel.

SELECT sum(Price) 
FROM Products
WHERE ProductId < 3;

Ergebnis:

528.95

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 sum(Price) 
FROM Products
WHERE Price > 100;

Ergebnis:

648.95

Nicht ganzzahlige Eingänge

Wenn eine Eingabe weder eine ganze Zahl noch NULL ist, dann sum() gibt einen Fließkommawert zurück, der eine Annäherung an die wahre Summe sein könnte.

In solchen Fällen kann es zu unerwarteten Ergebnissen kommen.

Unten sehen Sie ein Beispiel, das versucht, eine Reihe von Faxnummern hinzuzufügen.

Sehen wir uns zunächst die Liste der Faxnummern an.

SELECT Fax FROM Customer 
WHERE Fax IS NOT NULL;

Ergebnis:

Fax               
------------------
+55 (12) 3923-5566
+420 2 4172 5555  
+55 (11) 3033-4564
+55 (11) 3055-8131
+55 (21) 2271-7070
+55 (61) 3363-7855
+1 (780) 434-5565 
+1 (604) 688-8756 
+1 (650) 253-0000 
+1 (425) 882-8081 
+1 (212) 221-4679 
+1 (408) 996-1011 

Folgendes passiert nun, wenn ich versuche, sie zu addieren.

SELECT sum(Fax) 
FROM Customer;

Ergebnis:

701.0 

In diesem Fall scheint es alle Präfixe hinzugefügt zu haben.

Folgendes passiert, wenn ich sum() verwende auf einer Spalte von Strings.

SELECT sum(ProductName) 
FROM Products;

Ergebnis:

0.0

Das Schlüsselwort DISTINCT

Sie können den DISTINCT hinzufügen Schlüsselwort, um nur eindeutige Werte hinzuzufügen. Verwenden Sie dazu sum(DISTINCT X) wobei X ist der Spaltenname.

Siehe So addieren Sie nur die unterschiedlichen Werte mit SQLite Sum() für ein Beispiel.