# MIN関数

MINは集約関数で、全行に渡る式の最小値を求めます。 (集約 (集合関数)を参照してください。) MINは組み込みのデータ型に対してのみ適用可能です。(これにはCHAR、VARCHAR、DATE、TIME等が含まれます。)

#### 構文

    MIN ( [ DISTINCT | ALL ] 式 )

DISTINCTとALLという限定詞には、重複を取り除いたり、重複を残す働きがあります。しかしこれらの限定詞はMIN式では効果がありません。 選択式には限定詞は唯一つしか書くことができません。 例えば次の問合せは許されません。

    SELECT COUNT (DISTINCT flying_time), MIN (DISTINCT miles)
    FROM Flights

この式には複数の列への参照や式を書くことができます。しかし、副問合せや他の集約を書くことはできません。 式は組込みのデータ型として評価されなければならず、従ってメソッドを呼ぶなら組込みのデータ型に評価されなければなりません。(例えば、java.lang.Integerやintを返すメソッドであるなら、INTEGERと評価されます。)もし式がNULLと評価されるのであれば、その値は集約にて無視されます。

型により最小値を決める規則は異なります。CHAR、VARCHARでは、MINの評価結果は値の末尾にある空白文字数に影響されます。 例えば'z'と'z 'が列に記録されていたとして、どちらの値が最小値として返されるかを決める方法はありません。なぜならば文字列の比較にて空白文字は無視されるからです。

結果のデータ型は処理する式のデータ型と同じです。(オーバーフローすることはありません。)

    -- 有効ではありません。
    SELECT DISTINCT flying_time, MIN(DISTINCT miles) from Flights
    -- 有効です。
    SELECT COUNT(DISTINCT flying_time), MIN(DISTINCT miles) from Flights
    -- 最も若い日付を探します。
    SELECT MIN (flight_date) FROM FlightAvailability;

親トピック: 組み込み関数