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.

Themenlink (Symbol)Transact-SQL-Syntaxkonventionen

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

integer-Kategorie

int

decimal-Kategorie (p, s)

decimal(38, s)

Kategorien money und smallmoney

money

Kategorien float und real

float

ms187810.note(de-de,SQL.90).gifWichtig:
DISTINCT-Aggregate, z. B. AVG(DISTINCT column_name), COUNT(DISTINCT column_name), MAX(DISTINCT column_name), MIN(DISTINCT column_name) und SUM(DISTINCT column_name), werden nicht unterstützt, wenn CUBE oder ROLLUP verwendet wird. In diesem Fall gibt SQL Server 2005-Datenbankmodul eine Fehlermeldung zurück und bricht die Abfrage ab.

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)

Siehe auch

Verweis

Aggregatfunktionen (Transact-SQL)
OVER-Klausel (Transact-SQL)

Hilfe und Informationen

Informationsquellen für SQL Server 2005