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