Skip to main content

This is documentation for Caché & Ensemble. See the InterSystems IRIS version of this content.Opens in a new tab

For information on migrating to InterSystems IRISOpens in a new tab, see Why Migrate to InterSystems IRIS?

MIN

指定された列内の最小データ値を返す集約関数です。

Synopsis

MIN([ALL | DISTINCT [BY(col-list)]] expression [%FOREACH(col-list)] [%AFTERHAVING])

引数

ALL オプション — すべての値に集約関数を適用します。ALL は、MIN によって返される値に影響を与えません。これは、SQL-92 の互換性のために用意されたものです。
DISTINCT オプション — それぞれの一意な値が考慮されるように指定します。DISTINCT は、MIN によって返される値に影響を与えません。これは、SQL-92 の互換性のために用意されたものです。
expression 任意の有効な式。通常、最小値が返される値を持つ列の名前。
%FOREACH(col-list) オプション — 列名、またはコンマで区切られた列名のリスト。%FOREACH の詳細は、"SELECT" を参照してください。
%AFTERHAVING オプションHAVING 節にある条件を適用します。

概要

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 照合で定義されます。現在のネームスペースにおける既定の文字列の照合の定義およびフィールド/プロパティの定義における既定以外のフィールドの照合タイプの指定の詳細は、"Caché SQL の使用法" の “照合” の章を参照してください。

フィールドの定義済み照合タイプが SQLUPPER である場合、MIN は文字列をすべて大文字で返します。したがって、SELECT MIN(Name) は、データの元の大文字/小文字に関係なく 'AARON' を返します。ただし、比較は大文字の照合を使用して行われるため、HAVING Name=MIN(Name) 節では、'Aaron'、'AARON'、および 'aaron' の Name 値が含まれる行が選択されます。

数値の場合、返される小数桁数は、expression の小数桁数と同じになります。

データ・フィールドの NULL 値は、MIN 集約関数値を得る場合は無視されます。クエリから行が返されない場合や、すべての行に対するデータ・フィールド値が NULL の場合、MIN は NULL を返します。

現在のトランザクションで発生する変更

すべての集約関数と同様に、MIN も必ず、現在のトランザクションの分離レベルに関係なく、コミットされていない変更も含めてデータの現在の状態を返します。詳細は、"SET TRANSACTION" と "START TRANSACTION" を参照してください。

以下の例では、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

関連項目

FeedbackOpens in a new tab