SUM (Transact-SQL)
Gibt die Summe aller Werte oder nur der DISTINCT-Werte im Ausdruck zurück. SUM kann nur bei numerischen Spalten verwendet werden. NULL-Werte werden ignoriert. Darauf folgt möglicherweise die OVER-Klausel (Transact-SQL).
Syntax
SUM ( [ ALL | DISTINCT ] expression )
Argumente
ALL
Wendet die Aggregatfunktion auf alle Werte an. ALL ist die Standardeinstellung.DISTINCT
Gibt an, dass SUM die Summe der eindeutigen Werte zurückgibt.expression
Eine Konstante, Spalte oder Funktion sowie jede Kombination aus arithmetischen Operatoren, bitweisen Operatoren und Zeichenfolgenoperatoren. expression ist ein Ausdruck der exakten numerischen oder ungefähren numerischen Datentypkategorie, mit Ausnahme des bit-Datentyps. Aggregatfunktionen und Unterabfragen sind nicht zulässig. Weitere Informationen finden Sie unter Ausdrücke (Transact-SQL).
Rückgabetypen
Gibt die Summe aller expression-Werte im genauesten expression-Datentyp zurück.
Ausdrucksergebnis |
Rückgabetyp |
---|---|
tinyint |
int |
smallint |
int |
int |
int |
bigint |
bigint |
decimal-Kategorie (p, s) |
decimal(38, s) |
Kategorien money und smallmoney |
money |
Kategorien float und real |
float |
Beispiele
A. Verwenden von SUM für Aggregate und Zeilenaggregate
Im folgenden Beispiel werden die Unterschiede zwischen Aggregatfunktionen und Zeilenaggregatfunktionen gezeigt. Im ersten Beispiel werden Aggregatfunktionen gezeigt, die nur die Zusammenfassungsdaten erzeugen, im zweiten werden Zeilenaggregatfunktionen gezeigt, die sowohl die Detail- als auch die Zusammenfassungsdaten erzeugen.
USE AdventureWorks;
GO
SELECT Color, SUM(ListPrice), SUM(StandardCost)
FROM Production.Product
WHERE Color IS NOT NULL
AND ListPrice != 0.00
AND Name LIKE 'Mountain%'
GROUP BY Color
ORDER BY Color;
GO
Dies ist das Resultset.
Color
--------------- --------------------- ---------------------
Black 27404.84 15214.9616
Silver 26462.84 14665.6792
White 19.00 6.7926
(3 row(s) affected)
USE AdventureWorks;
GO
SELECT Color, ListPrice, StandardCost
FROM Production.Product
WHERE Color IS NOT NULL
AND ListPrice != 0.00
AND Name LIKE 'Mountain%'
ORDER BY Color
COMPUTE SUM(ListPrice), SUM(StandardCost) BY Color;
GO
Dies ist das Resultset.
Color ListPrice StandardCost
--------------- --------------------- ---------------------
Black 2294.99 1251.9813
Black 2294.99 1251.9813
Black 2294.99 1251.9813
Black 1079.99 598.4354
Black 1079.99 598.4354
Black 1079.99 598.4354
Black 1079.99 598.4354
Black 3374.99 1898.0944
Black 3374.99 1898.0944
Black 3374.99 1898.0944
Black 3374.99 1898.0944
Black 539.99 294.5797
Black 539.99 294.5797
Black 539.99 294.5797
Black 539.99 294.5797
Black 539.99 294.5797
sum sum
--------------------- ---------------------
27404.84 15214.9616
Color ListPrice StandardCost
--------------- --------------------- ---------------------
Silver 2319.99 1265.6195
Silver 2319.99 1265.6195
Silver 2319.99 1265.6195
Silver 3399.99 1912.1544
Silver 3399.99 1912.1544
Silver 3399.99 1912.1544
Silver 3399.99 1912.1544
Silver 769.49 419.7784
Silver 769.49 419.7784
Silver 769.49 419.7784
Silver 769.49 419.7784
Silver 564.99 308.2179
Silver 564.99 308.2179
Silver 564.99 308.2179
Silver 564.99 308.2179
Silver 564.99 308.2179
sum sum
--------------------- ---------------------
26462.84 14665.6792
Color ListPrice StandardCost
--------------- --------------------- ---------------------
White 9.50 3.3963
White 9.50 3.3963
sum sum
--------------------- ---------------------
19.00 6.7926
(37 row(s) affected)
B. Berechnen von Summenwerten für Gruppen mit mehr als einer Spalte
Im folgenden Beispiel wird die Summe von ListPrice und StandardCost für jede in der Product-Tabelle aufgeführte Farbe berechnet.
USE AdventureWorks;
GO
SELECT Color, SUM(ListPrice), SUM(StandardCost)
FROM Production.Product
GROUP BY Color
ORDER BY Color;
GO
Dies ist das Resultset.
Color
--------------- --------------------- ---------------------
NULL 4182.32 2238.4755
Black 67436.26 38636.5002
Blue 24015.66 14746.1464
Grey 125.00 51.5625
Multi 478.92 272.2542
Red 53274.10 32610.7661
Silver 36563.13 20060.0483
Silver/Black 448.13 198.97
White 36.98 13.5172
Yellow 34527.29 21507.6521
(10 row(s) affected)