MAX
構文
関連項目:
構文、セマンティクスおよび制限事項の詳細は、「分析ファンクション」を参照してください。
目的
MAX
はexpr
の最大値を戻します。これは、集計ファンクションまたは分析ファンクションとして使用できます。
関連項目:
-
expr
の書式の詳細は、「SQL式」を参照してください。2進浮動小数点の比較セマンティクスの詳細は、「浮動小数点数」を参照してください。「集計ファンクション」も参照してください。 -
expr
の文字値を比較するためにMAX
で使用する照合を定義する照合決定ルール、およびこのファンクションの戻り値が文字値である場合に、それに割り当てる照合を定義する照合導出ルールは、『Oracle Databaseグローバリゼーション・サポート・ガイド』の付録Cを参照してください。
集計の例
次の例では、hr.employees
表の最高給与を検索します。
SELECT MAX(salary) "Maximum" FROM employees; Maximum ---------- 24000
分析の例
次の例では、各従業員について、その従業員と所属が同じ従業員のうち、一番高い給与を計算します。
SELECT manager_id, last_name, salary, MAX(salary) OVER (PARTITION BY manager_id) AS mgr_max FROM employees ORDER BY manager_id, last_name, salary; MANAGER_ID LAST_NAME SALARY MGR_MAX ---------- ------------------------- ---------- ---------- 100 Cambrault 11000 17000 100 De Haan 17000 17000 100 Errazuriz 12000 17000 100 Fripp 8200 17000 100 Hartstein 13000 17000 100 Kaufling 7900 17000 100 Kochhar 17000 17000 . . .
この問合せを述語のある親問合せで囲むと、各部門で給与の一番高い従業員がわかります。
SELECT manager_id, last_name, salary FROM (SELECT manager_id, last_name, salary, MAX(salary) OVER (PARTITION BY manager_id) AS rmax_sal FROM employees) WHERE salary = rmax_sal ORDER BY manager_id, last_name, salary; MANAGER_ID LAST_NAME SALARY ---------- ------------------------- ---------- 100 De Haan 17000 100 Kochhar 17000 101 Greenberg 12008 101 Higgins 12008 102 Hunold 9000 103 Ernst 6000 108 Faviet 9000 114 Khoo 3100 120 Nayer 3200 120 Taylor 3200 121 Sarchand 4200 122 Chung 3800 123 Bell 4000 124 Rajs 3500 145 Tucker 10000 146 King 10000 147 Vishney 10500 148 Ozer 11500 149 Abel 11000 201 Fay 6000 205 Gietz 8300 King 24000 22 rows selected.