SUM (Transact-SQL)
式の、すべての値または DISTINCT 値のみの合計を返します。SUM は、数値型列に対して使用できます。NULL 値は無視されます。後に OVER 句 (Transact-SQL) が続く場合があります。
構文
SUM ( [ ALL | DISTINCT ] expression )
引数
ALL
すべての値に集計関数が適用されます。ALL が既定値です。DISTINCT
一意な値の合計を返すことを指定します。expression
定数、列、または関数と、算術演算子、ビットごとの演算子、および文字列演算子の組み合わせを指定します。expression は、真数データ型または概数データ型の式です。ただし、bit データ型は除きます。集計関数とサブクエリは使用できません。詳細については、「式 (Transact-SQL)」を参照してください。
戻り値の型
最も有効桁数の大きい expression のデータ型で、すべての expression 値の合計を返します。
式の結果 |
戻り値の型 |
---|---|
tinyint |
int |
smallint |
int |
int |
int |
bigint |
bigint |
decimal 型 (p, s) |
decimal(38, s) |
money 型と smallmoney 型 |
money |
float 型と real 型 |
float |
例
A. 集計と行集計で SUM を使用する
次の 2 つの例では、集計関数と行集計関数の違いを示します。最初は、集計データのみを返す集計関数の例、2 番目は、詳細なデータと集計データを返す行集計関数の例です。
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
以下に結果セットを示します。
Color
--------------- --------------------- ---------------------
Black 27404.84 15214.9616
Silver 26462.84 14665.6792
White 19.00 6.7926
(3 行処理されました)
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
以下に結果セットを示します。
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 行処理されました)
B. 複数の列でグループ合計を計算する
次の例では、Product テーブルに一覧された色ごとに ListPrice と StandardCost の合計を計算します。
USE AdventureWorks2008R2;
GO
SELECT Color, SUM(ListPrice), SUM(StandardCost)
FROM Production.Product
GROUP BY Color
ORDER BY Color;
GO
以下に結果セットを示します。
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 行処理されました)