X

SQL Server MIN 最小

MIN 最小値

SQL Server の対象データの最小値を求めるときに、MIN関数を使います。
数値型、日付型、文字列の最小値を求める事ができます。

構文:MIN ( [ ALL | DISTINCT ] expression )
引数:ALL すべての値に集計関数が適用されます。 ALL が既定値です。
   DISTINCT MIN では意味がなく、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 MIN(ALL c_point) from @tbl1
select MIN(c_point) from @tbl1 --ALLが無くても同じ結果

--DISTINCT
--もともと一番小さい値を返すので意味がない
select MIN(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 MIN(c_point) from @tbl1
select MIN(c_point) from @tbl1 where a_goods='001'
select MIN(c_point) from @tbl1 where a_goods='002'
select MIN(c_point) from @tbl1 where a_goods='003'
select MIN(c_point) from @tbl1 where a_goods='004'
select MIN(c_point) from @tbl1 where a_goods='005'
select a_goods, MIN(c_point) from @tbl1 group by a_goods  --商品の最小値

select distinct b_empNo, MIN(c_point) over (partition by b_empNo) from @tbl1  --社員の最小値 
select b_empNo, MIN(c_point) from @tbl1 group by b_empNo  --社員の最小値

以上、SQL Server で MIN関数を使い最小値を求めるでした。

itsysgroup: