문법 |
목적 |
MAX 함수는 인수중에서 최대값을 반환한다. 집계함수, 분석 함수로 이용가능하다.
만약 DISTINCT를 지정했다면, analytic_clause의 query_partition_clause을
지정할수 있다. 그러나, order_by_clause
과 windowing_clause은
허용하지 않는다.
예제
|
집계
예제
다음 예제는 hr.employees 테이블에서 최고 급여를 계산한다.
SELECT MAX(salary) "Maximum" FROM employees;
Maximum
----------
24000
다음 예제는 같은 manager_id내에서 최고 급여를 계산한다.
SELECT manager_id, last_name, salary,
MAX(salary) OVER (PARTITION BY manager_id) AS mgr_max
FROM employees;
MANAGER_ID LAST_NAME SALARY MGR_MAX
---------- ------------------------- ---------- ----------
100 Kochhar 17000 17000
100 De Haan 17000 17000
100 Raphaely 11000 17000
100 Kaufling 7900 17000
100 Fripp 8200 17000
100 Weiss 8000 17000
. . .
만약 INLINE-VIEW로 위 결과를 사용하면, 각 MANAGER_ID에서 가장 높은 급여를 받는
종업원을 정의 할수 있다. 즉, 동일 MANAGER_ID의 최대값(최대 급여)을 계산후에 그 최대값(최대 급여)을 가지는 사람을 찾는 방법이다.
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;
MANAGER_ID LAST_NAME SALARY
---------- ------------------------- ----------
100 Kochhar 17000
100 De Haan 17000
101 Greenberg 12000
101 Higgens 12000
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 Goyal 6000
205 Gietz 8300
King 24000