In SQL Server die SUM()
Aggregatfunktion gibt die Summe eines bestimmten Ausdrucks zurück.
Es kann auch verwendet werden, um die Summe aller unterschiedlichen (eindeutigen) Werte im Ausdruck zurückzugeben.
SUM()
funktioniert nur bei numerischen Spalten. Nullwerte werden ignoriert.
Syntax
Die Syntax lautet wie folgt:
SUM ( [ ALL | DISTINCT ] expression )
Es kann auch mit einem OVER
verwendet werden Klausel:
SUM ([ ALL ] expression) OVER ( [ partition_by_clause ] order_by_clause)
Beispiel
Angenommen, wir haben eine Tabelle namens Products
mit folgenden Daten:
SELECT
VendorId,
ProductName,
ProductPrice
FROM Products;
Ergebnis:
+------------+---------------------------------+----------------+ | VendorId | ProductName | ProductPrice | |------------+---------------------------------+----------------| | 1001 | Left handed screwdriver | 25.99 | | 1001 | Long Weight (blue) | 14.75 | | 1001 | Long Weight (green) | 11.99 | | 1002 | Sledge Hammer | 33.49 | | 1003 | Chainsaw | 245.00 | | 1003 | Straw Dog Box | NULL | | 1004 | Bottomless Coffee Mugs (4 Pack) | 9.99 | | 1001 | Right handed screwdriver | 25.99 | +------------+---------------------------------+----------------+
Wir können die folgende Abfrage verwenden, um die Summe aller Preise zu erhalten.
SELECT SUM(ProductPrice)
FROM Products;
Ergebnis:
367.20
Hier werden Preisinformationen im ProductPrice
gespeichert Spalte, und wir übergeben das als Argument an SUM()
Funktion, die dann die Summe berechnet und das Ergebnis zurückgibt.
Nullwerte
Die SUM()
Funktion ignoriert Nullwerte bei der Durchführung ihrer Berechnung.
Wenn die Spalte Nullwerte enthält, wird möglicherweise eine Warnung angezeigt, die darauf hinweist, dass Nullwerte entfernt wurden.
Hier ist zum Beispiel die Warnung, die ich beim Ausführen des obigen Beispiels erhalten habe:
SELECT SUM(ProductPrice)
FROM Products;
Ergebnis:
+--------------------+ | (No column name) | |--------------------| | 367.20 | +--------------------+ Warning: Null value is eliminated by an aggregate or other SET operation.
Gefilterte Ergebnisse
Die SUM()
Die Funktion arbeitet mit den von der Abfrage zurückgegebenen Zeilen. Wenn Sie also die Ergebnisse filtern, das Ergebnis von SUM()
wird das widerspiegeln.
SELECT SUM(ProductPrice)
FROM Products
WHERE VendorId = 1001;
Ergebnis:
78.72
In diesem Fall ist 78,72 die Summe aller vom angegebenen Anbieter angebotenen Produkte.
Der DISTINCT
Schlüsselwort
Sie können den DISTINCT
verwenden Stichwort mit SUM()
nur unterschiedliche Werte zu berechnen. Das heißt, wenn doppelte Werte vorhanden sind, werden sie als ein Wert behandelt.
Beispiel:
SELECT
SUM(ALL ProductPrice) AS "All",
SUM(DISTINCT ProductPrice) AS "Distinct"
FROM Products;
Ergebnis:
+--------+------------+ | All | Distinct | |--------+------------| | 367.20 | 341.21 | +--------+------------+ Warning: Null value is eliminated by an aggregate or other SET operation.
Unsere Tabelle enthält zwei Artikel mit demselben Preis (der Linkshänder-Schraubendreher und der Rechtshänder-Schraubendreher kosten beide 25,99). Der DISTINCT
Schlüsselwort führt dazu, dass beide Werte als ein Wert behandelt werden.
Fensterfunktionen
Die SUM()
Funktion kann mit einem OVER
verwendet werden -Klausel zum Erstellen einer Fensterfunktion. Siehe SQL SUM()
für Anfänger als Beispiel.