Suma (Transact-SQL)
Zwraca sumę wszystkich wartości lub tylko wartooci DISTINCT wyrażenie.Suma służy tylko do kolumn numerycznych.Wartości zerowe są ignorowane.Mogą być uzupełniane przez Klauzula OVER (Transact-SQL).
Składnia
SUM ( [ ALL | DISTINCT ] expression )
Argumenty
ALL
Dotyczy wszystkich wartościfunkcja wartość zagregowana. Jest wartością domyślną.DISTINCT
Określa, które suma zwraca sumę wartości unikatowe.expression
Jest stała, kolumnalub funkcjai dowolną kombinację arytmetyczny, bitowy i operatorów ciąg .expressionto wyrażenie kategorii typu dokładne dane liczbowe numerycznych lub przybliżonej z wyjątkiem bit typu danych.Funkcje agregujące i podkwerend nie są dozwolone.Aby uzyskać więcej informacji, zobacz Wyrażenia języka Transact-SQL).
Zwracane typy
Zwraca wartość Sumowanie wszystkich expression wartości w najbardziej precyzyjne expression typu danych.
Wyrażenie wyników |
Zwracany typ |
---|---|
tinyint |
int |
smallint |
int |
int |
int |
bigint |
bigint |
decimalKategoria (p, s) |
decimal(38, s) |
moneyi smallmoney kategorii |
money |
floati real kategorii |
float |
Przykłady
A.Przy użyciu funkcji Suma dla agregatów i agregaty wiersza
Następujące przykłady przedstawiają różnice funkcji wartość zagregowana i funkcji wartość zagregowana wiersza.Pierwszy przedstawiono funkcje wartość zagregowana , podając wyłącznie dane sumaryczne, a drugi zawiera funkcje wartość zagregowana wierszy szczegółów i podsumowań danych.
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
Oto zestaw wyników.
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
Oto zestaw wyników.
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.Obliczanie sumy grup z więcej niż jedną kolumna
W poniższym przykładzie oblicza sumę ListPrice i StandardCost dla każdego koloru, wymienionych w Product tabela.
USE AdventureWorks2008R2;
GO
SELECT Color, SUM(ListPrice), SUM(StandardCost)
FROM Production.Product
GROUP BY Color
ORDER BY Color;
GO
Oto zestaw wyników.
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)