概要
MIN 集約関数は、expression の最小値を返します。一般的に expression は、クエリで返される複数行の中のフィールドの名前 (または、フィールド名を 1 つ以上含む式) です。
MIN は、テーブルまたはビューを参照する SELECT クエリまたは SELECT サブクエリで使用できます。MIN は、一般のフィールド値と共に SELECT リストや HAVING 節で表示できます。
MIN は、WHERE 節では使用できません。SELECT がサブクエリの場合を除いて、JOIN の ON 節では MIN を使用できません。
その他の大半の集約関数と同様に、MIN はストリーム・フィールドに適用できません。これを実行しようとすると、SQLCODE -37 エラーが生成されます。
その他の大半の集約関数とは異なり、MIN(DISTINCT BY(col2) col1) を含めて、ALL および DISTINCT キーワードは MIN 内で何も実行しません。これらは、SQL–92 の互換性のために用意されたものです。
データ値
MIN によって使用される指定されたフィールドは、数値または非数値です。数値データ型フィールドの場合、最小値は最も小さな数値として定義されます。したがって -7 の方が -3 よりも小さくなります。非数値データ型フィールドの場合、最小値は文字列の照合順で最も小さな値として定義されます。したがって '-3' の方が '-7' よりも小さくなります。
空文字列 ('') 値は CHAR(0) として処理されます。
述語では、フィールドに対して定義された照合タイプが使用されます。既定では、文字列データ型フィールドは大文字と小文字が区別されない SQLUPPER 照合で定義されます。現在のネームスペースにおける既定の文字列の照合の定義およびフィールド/プロパティの定義における既定以外のフィールドの照合タイプの指定の詳細は、"InterSystems IRIS の使用法" の “照合” の章を参照してください。
フィールドの定義済み照合タイプが SQLUPPER である場合、MIN は文字列をすべて大文字で返します。したがって、SELECT MIN(Name) は、データの元の大文字/小文字に関係なく 'AARON' を返します。ただし、比較は大文字の照合を使用して行われるため、HAVING Name=MIN(Name) 節では、'Aaron'、'AARON'、および 'aaron' の Name 値が含まれる行が選択されます。
数値の場合、返される小数桁数は、expression の小数桁数と同じになります。
データ・フィールドの NULL 値は、MIN 集約関数値を得る場合は無視されます。クエリから行が返されない場合や、すべての行に対するデータ・フィールド値が NULL の場合、MIN は NULL を返します。
例
以下の例では、Salary 金額にドル記号 ($) を連結します。
以下のクエリは、Sample.Employee データベース内の最低 (最小) 給与額を返します。
SELECT '$' || MIN(Salary) AS LowSalary
FROM Sample.Employee
以下のクエリは、給与額が $75,000 より多い従業員が 1 人以上存在する州ごとに行を 1 つ返します。この行には、%AFTERHAVING キーワードを使用して給与額が $75,000 より多い従業員の最小給与額を返し、さらにその州の全従業員の最小給与額と最大給与額を返します。
SELECT Home_State,
'$' || MIN(Salary %AFTERHAVING) AS MinSalaryAbove75K,
'$' || MIN(Salary) AS MinSalary,
'$' || MAX(Salary) AS MaxSalary
FROM Sample.Employee
GROUP BY Home_State
HAVING Salary > 75000
ORDER BY MinSalaryAbove75K
以下のクエリは、Sample.Employee データベース内で検出された照合順の最低 (最小) および最高 (最大) の名前を返します。
SELECT Name,MIN(Name),MAX(Name)
FROM Sample.Employee
MIN および MAX は、比較する前に Name の値を大文字に変換します。
以下のクエリは、Sample.Employee データベース内の Home_State が VT である従業員の最低 (最小) 給与額を返します。
SELECT MIN(Salary)
FROM Sample.Employee
WHERE Home_State = 'VT'
以下のクエリは、Sample.Employee データベース内の Home_State ごとに、従業員数および最低 (最小) の従業員給与額を返します。
SELECT Home_State,
COUNT(Home_State) As NumEmployees,
MIN(Salary) As LowSalary
FROM Sample.Employee
GROUP BY Home_State
ORDER BY LowSalary