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.Integerintを返すメソッドは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