SUM (Transact-SQL)
式の、すべての値または DISTINCT 値のみの合計を返します。SUM は、数値型列に対して使用できます。NULL 値は無視されます。後に OVER 句が続く場合があります。
構文
SUM ( [ ALL | DISTINCT ] expression )
引数
- ALL
すべての値に集計関数が適用されます。ALL が既定値です。
- DISTINCT
一意な値の合計を返すことを指定します。
- expression
定数、列、または関数と、算術演算子、ビットごとの演算子、および文字列演算子の組み合わせを指定します。expression は、真数データ型または概数データ型の式です。ただし、bit データ型は除きます。集計関数とサブクエリは使用できません。詳細については、「式 (Transact-SQL)」を参照してください。
戻り値の型
最も有効桁数の大きい expression のデータ型で、すべての expression 値の合計を返します。
式の結果 | 戻り値の型 |
---|---|
int 型 |
int |
decimal 型 (p, s) |
decimal(38, s) |
money 型と smallmoney 型 |
money |
float 型と real 型 |
float |
重要 : |
---|
AVG(DISTINCT column_name)、COUNT(DISTINCT column_name)、MAX(DISTINCT column_name)、MIN(DISTINCT column_name)、および SUM(DISTINCT column_name) などの非重複集計関数は、CUBE または ROLLUP を使用している場合はサポートされません。使用した場合、SQL Server 2005 データベース エンジンはエラー メッセージを返し、クエリを取り消します。 |
例
A. 集計と行集計で SUM を使用する
次の 2 つの例では、集計関数と行集計関数の違いを示します。最初は、集計データのみを返す集計関数の例、2 番目は、詳細なデータと集計データを返す行集計関数の例です。
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
以下に結果セットを示します。
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
以下に結果セットを示します。
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. 複数の列でグループ合計を計算する
次の例では、Product
テーブルに一覧された色ごとに ListPrice
と StandardCost
の合計を計算します。
USE AdventureWorks;
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 row(s) affected)
参照
関連項目
集計関数 (Transact-SQL)
OVER 句 (Transact-SQL)