SUM 合計
SQL Server の対象データの合計値の求めるときに、SUM関数を使います。
合計値はいろいろなデータ分析で使用されるので良く使う指標だと思います。
構文:SUM ( [ ALL | DISTINCT ] expression )
引数:ALL すべての値に集計関数が適用されます。 ALL が既定値です。
DISTINCT 値の出現回数にかかわらず、一意な値の合計を返すことを指定します。
expression 定数、列、関数、および算術演算子、ビット演算子、文字列演算子の組み合わせを指定します。
NULL 値はすべて無視されます。(対象データになりません)
下のSQL例文を載せておきます。
declare @tbl1 table(a_goods varchar(3), b_empNo char(1), c_point int) insert into @tbl1 (a_goods,b_empNo,c_point) values ('001','1',800000) insert into @tbl1 (a_goods,b_empNo,c_point) values ('001','2',600000) insert into @tbl1 (a_goods,b_empNo,c_point) values ('001','3',400000) insert into @tbl1 (a_goods,b_empNo,c_point) values ('001','4',300000) insert into @tbl1 (a_goods,b_empNo,c_point) values ('001','5',500000) insert into @tbl1 (a_goods,b_empNo,c_point) values ('001','6',600000) insert into @tbl1 (a_goods,b_empNo,c_point) values ('001','7',2200000) --ALL select SUM(ALL c_point) from @tbl1 select SUM(c_point) from @tbl1 --ALLが無くても同じ結果 --DISTINCT --600000が2行あるため、重複を省き計算される select SUM(DISTINCT c_point) from @tbl1 --expression --型変換、桁あふれに対応する delete from @tbl1 insert into @tbl1 (a_goods,b_empNo,c_point) values ('001','1',800000000) insert into @tbl1 (a_goods,b_empNo,c_point) values ('001','2',600000000) insert into @tbl1 (a_goods,b_empNo,c_point) values ('001','3',400000000) insert into @tbl1 (a_goods,b_empNo,c_point) values ('001','4',300000000) insert into @tbl1 (a_goods,b_empNo,c_point) values ('001','5',500000000) insert into @tbl1 (a_goods,b_empNo,c_point) values ('001','6',600000000) insert into @tbl1 (a_goods,b_empNo,c_point) values ('001','7',1100000000) select SUM(cast(c_point as bigint)) from @tbl1 --bigint型に select SUM(cast(c_point as decimal(20,2))) from @tbl1 --decimal型に
もう一例
over や group by 句で括って結果を求める
declare @tbl1 table(a_goods varchar(5), b_empNo char(1), c_point int) insert into @tbl1 (a_goods,b_empNo,c_point) values ('001','1',60) insert into @tbl1 (a_goods,b_empNo,c_point) values ('001','2',70) insert into @tbl1 (a_goods,b_empNo,c_point) values ('001','3',40) insert into @tbl1 (a_goods,b_empNo,c_point) values ('001','4',20) insert into @tbl1 (a_goods,b_empNo,c_point) values ('001','5',40) insert into @tbl1 (a_goods,b_empNo,c_point) values ('001','6',50) insert into @tbl1 (a_goods,b_empNo,c_point) values ('001','7',20) insert into @tbl1 (a_goods,b_empNo,c_point) values ('002','1',70) insert into @tbl1 (a_goods,b_empNo,c_point) values ('002','2',60) insert into @tbl1 (a_goods,b_empNo,c_point) values ('002','3',50) insert into @tbl1 (a_goods,b_empNo,c_point) values ('002','4',80) insert into @tbl1 (a_goods,b_empNo,c_point) values ('002','5',30) insert into @tbl1 (a_goods,b_empNo,c_point) values ('002','6',60) insert into @tbl1 (a_goods,b_empNo,c_point) values ('002','7',40) insert into @tbl1 (a_goods,b_empNo,c_point) values ('003','1',90) insert into @tbl1 (a_goods,b_empNo,c_point) values ('003','2',70) insert into @tbl1 (a_goods,b_empNo,c_point) values ('003','3',40) insert into @tbl1 (a_goods,b_empNo,c_point) values ('003','4',70) insert into @tbl1 (a_goods,b_empNo,c_point) values ('003','5',60) insert into @tbl1 (a_goods,b_empNo,c_point) values ('003','6',50) insert into @tbl1 (a_goods,b_empNo,c_point) values ('003','7',50) insert into @tbl1 (a_goods,b_empNo,c_point) values ('004','1',30) insert into @tbl1 (a_goods,b_empNo,c_point) values ('004','2',50) insert into @tbl1 (a_goods,b_empNo,c_point) values ('004','3',90) insert into @tbl1 (a_goods,b_empNo,c_point) values ('004','4',40) insert into @tbl1 (a_goods,b_empNo,c_point) values ('004','5',70) insert into @tbl1 (a_goods,b_empNo,c_point) values ('004','6',80) insert into @tbl1 (a_goods,b_empNo,c_point) values ('004','7',30) insert into @tbl1 (a_goods,b_empNo,c_point) values ('005','1',80) insert into @tbl1 (a_goods,b_empNo,c_point) values ('005','2',60) insert into @tbl1 (a_goods,b_empNo,c_point) values ('005','3',40) insert into @tbl1 (a_goods,b_empNo,c_point) values ('005','4',30) insert into @tbl1 (a_goods,b_empNo,c_point) values ('005','5',50) insert into @tbl1 (a_goods,b_empNo,c_point) values ('005','6',60) insert into @tbl1 (a_goods,b_empNo,c_point) values ('005','7',20) select SUM(c_point) from @tbl1 select SUM(c_point) from @tbl1 where a_goods='001' select SUM(c_point) from @tbl1 where a_goods='002' select SUM(c_point) from @tbl1 where a_goods='003' select SUM(c_point) from @tbl1 where a_goods='004' select SUM(c_point) from @tbl1 where a_goods='005' select a_goods, SUM(c_point) from @tbl1 group by a_goods --商品ごとの平均点 select distinct b_empNo, SUM(c_point) over (partition by b_empNo) from @tbl1 --社員ごとの平均点 select b_empNo, SUM(c_point) from @tbl1 group by b_empNo --社員ごとの平均点
以上、SQL Server で SUM関数を使い合計値を求めるでした。