指定の列の値の合計値を返す、集約関数です。
Synopsis
SUM([ALL | DISTINCT] expression)
引数
ALL オプションSUMexpression のすべての値の合計を返すように指定します。キーワードが指定されていない場合は、これが既定になります。
DISTINCT オプションSUMexpression の個別の (一意の) 値の合計を返すように指定します。指定されていない場合、既定は ALL です。
expression 任意の有効な式。普通は、合計値算出の対象となるデータ値を含む列の名前を指定します。
概要
SUM 集約関数は、expression の値の合計を返します。一般的に expression は、クエリで返される複数行の中のフィールド名 (または、フィールド名を 1 つ以上含む式) です。
SUM は、テーブルまたはビューを参照する SELECT クエリやサブクエリで使用できます。SUM は、一般のフィールド値とともに SELECT リストや HAVING 節で使用できます。
SUM は、WHERE 節では使用できません。SELECT がサブクエリの場合を除いて、JOINON 節では、SUM を使用できません。
データ値
既定では、集約関数は Display 値ではなく、Logical (内部) データ値を使用します。
通常、SUM は数値を含むフィールドまたは式に適用されます。タイプ・チェックは実行されないため、(ほとんど意味はありませんが) 非数値フィールドに対して実行できます。SUM では、空文字列 ('') のように数値でない値はゼロ (0) として扱われます。
データ・フィールドの NULL 値は、SUM 集約関数値を得る場合は無視されます。クエリから行が返されない場合や、すべての行のデータ・フィールド値が NULL の場合、SUM は NULL を返します。
現在のトランザクションで発生する変更
すべての集約関数と同様に、SUM は、現在のトランザクションの分離レベルにかかわらず、コミットされていない変更分を含め、常にデータの現在の状態を返します。詳細は、"SET TRANSACTION" および "START TRANSACTION" を参照してください。
以下のクエリは、Sample.Employee データベースに記録されている全従業員の給与の合計を返します。
SELECT SUM(Salary) AS Total_Payroll
     FROM Sample.Employee
以下のクエリは、Sample.Employee データベースに記録されている役職ごとの給与の合計と平均値を返します。
SELECT Title,SUM(Salary) AS Total,AVG(Salary) AS Average
     FROM Sample.Employee
     GROUP BY Title
     ORDER BY Average
以下のクエリは、算術式とともに使用される SUM を示しています。Sample.Employee データベースに記録されている各役職に対して、現在の給与の合計と支払いに 10% 増加した給与の合計を返します。
SELECT Title,SUM(Salary) AS Total,SUM(Salary * 1.1) AS Raises
     FROM Sample.Employee
     GROUP BY Title
     ORDER BY Title
以下のクエリは、CASE 文を使用して論理式とともに使用される SUM を示しています。すべての定額給従業員をカウントし、SUM を使用して $90,000 以上の所得があるすべての定額給従業員をカウントします。
SELECT COUNT(Salary) As AllPaid, 
       SUM(CASE WHEN (Salary >= 90000)
           THEN 1 ELSE 0 END) As TopPaid
       FROM Sample.Employee
関連項目
AVG COUNT