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.