MAX 最大
SQL Server の対象データの最大値を求めるときに、MAX関数を使います。
数値型、日付型、文字列の最大値を求める事ができます。
構文:MAX ( [ ALL | DISTINCT ] expression )
引数:ALL すべての値に集計関数が適用されます。 ALL が既定値です。
DISTINCT MAX では意味がなく、ISO との互換性を保つためだけに指定可能になっています。
expression 定数、列、関数、および算術演算子、ビット演算子、文字列演算子の組み合わせを指定します。
下の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 MAX(ALL c_point) from @tbl1 select MAX(c_point) from @tbl1 --ALLが無くても同じ結果 --DISTINCT --もともと一番大きい値を返すので意味がない select MAX(DISTINCT c_point) from @tbl1
もう一例
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',10) 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 MAX(c_point) from @tbl1 select MAX(c_point) from @tbl1 where a_goods='001' select MAX(c_point) from @tbl1 where a_goods='002' select MAX(c_point) from @tbl1 where a_goods='003' select MAX(c_point) from @tbl1 where a_goods='004' select MAX(c_point) from @tbl1 where a_goods='005' select a_goods, MAX(c_point) from @tbl1 group by a_goods --商品の最大値 select distinct b_empNo, MAX(c_point) over (partition by b_empNo) from @tbl1 --社員の最大値 select b_empNo, MAX(c_point) from @tbl1 group by b_empNo --社員の最大値
以上、SQL Server で MAX関数を使い最大値を求めるでした。