# MAX関数

MAXは行の集合から最大の値を求める集約関数です。(集約 (集合関数)を参照してください。) MAXは組み込まれたデータ型の式に対してのみ適用することができます。 (CHAR、VARCHAR、DATE、TIME、CHAR FOR BIT DATA等を含みます。)

#### 構文

    MAX ( [ DISTINCT | ALL ] 式 )

DISTINCTやALLという限定詞により、重複が除去されたりそのまま残されるか決まりますが、これらの限定詞はMAXの式では意味を持ちません。 選択式に置くことのできる、DISTINCTの限定詞は一つだけです。 例えば、次の問合せは許されていません。

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

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

CHAR、VARCHARについては、値の末尾にある空白文字列は、MAXの振る舞いに影響があります。 たとえば、'z'と'z 'の両方が列に格納されていた場合、空白は比較にて無視されるので結果は不定ですが、何れか片方の値が返されます。

結果のデータ型はMAXが動作する式と同じものとなります。(オーバーフローすることはありません。)

    -- FlightAvailabilityという表から最近の日付を探す。
    SELECT MAX (flight_date) FROM FlightAvailability
    -- それぞれの空港を出発する最も長距離の便を探す。
    -- なお10時間以上の便のみとする。
    SELECT MAX(flying_time), orig_airport
    FROM Flights
    GROUP BY orig_airport
    HAVING MAX(flying_time) > 10

Parent topic: 組み込み関数