Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

SUM()-Funktion in SQL Server

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.