SQL 関数一覧 (E‐N) > MAX(集計関数)

グループの最大値、最高値を求める

syntax

MAX ( [ DISTINCT | ALL ] expr )
return [ NUMBER ]

parameter

expr数値式

return

  • グループ内の最大の値を戻す。

avail

  • SQL でのみ使用可能。(PL/SQL の埋め込み SQL 含む)

MAX 集計関数の内容

グループにおける 数値式 expr の最大の値を戻す。

MAX 関数の追加説明と注意事項

MAX 関数の引数に DISTINCT を指定すると重複した数値を1つのデータとして扱われるが MIN 集計関数 での DISTINCT と同様に意味がない。
無指定の場合には MAX ( ALL expr ) となる。 NULL は最大値を選択するためのデータに含まれない。

GROUP BY 句 を使用していない場合には選択による結果セットを1つのグループとして全体の中から最大の値を戻す。
複数列においての最大値を求めるには GREATEST スカラー関数 を使用する。

注意

該当データが無い場合、NULL しかデータが存在しない場合には MAX 関数は NULL を戻す。

MAX 関数においても NULL 値 は 「未定義」をあらわす。NULL のデータしか存在しない場合に 結果は NULL となる。
変換例 ⇒ NVL ( MAX ( expr ) , 0 ) とする。ちなみに MAX ( NVL ( expr , 0 )) にすると、まず NULL が 0 に変換されて MIN される。マイナスの数値データと NULL の混合データの場合に結果が 0 になる。 ⇒ NVL 関数

MAX 使用例

MAX 関数 サンプルデータ
namedeptsalary
鈴木管理部300,000
高橋管理部400,000
佐藤開発部500,000
小林開発部500,000
山本開発部200,000
青木開発部NULL

全データ中一番高い賃金を求める。(該当者は2人)

SQL> select MAX(salary) from max_sample;
 
MAX(SALARY)
-----------
     500000

部門別における最高賃金額

SQL> select dept, MAX(salary)
  2  from max_sample group by dept;
 
DEPT         MAX(SALARY)
------------ -----------
管理部            400000
開発部            500000

全員に賃金の設定がされている部門の最高賃金額を求める ⇒ COUNT(*) と COUNT(expr) の違い および HAVING 句の使い方

SQL> select dept, MAX(salary)
  2  from max_sample
  3  group by dept
  4  having count(*) = count(salary);
 
DEPT         MAX(SALARY)
------------ -----------
管理部            400000

上の SQL は以下のように「意味が正しく、かつ、容易に理解される」ように書くのが望ましい。

SQL> select dept, MAX(salary)
  2  from max_sample m1
  3  where not exists (
  4     select * from max_sample m2
  5     where m1.dept = m2.dept and salary IS NULL
  6  )
  7  group by dept;
 
DEPT         MAX(SALARY)
------------ -----------
管理部            400000


 
アルファベット別 関数一覧 ショートカット
ABCDEFG
HILMNOP
RSTUVWX
日本オラクル
■ 日本オラクル 株式会社
■ オラクルマスター資格 (オラクルマスターとは
■ Oracle のライセンスがわからない…
Oracle Direct (ネットで聞いても最後はここで要確認)