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).

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

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 AdventureWorks2008R2;
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 AdventureWorks2008R2;
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 AdventureWorks2008R2;
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)