본문 바로가기

[오라클 레퍼런스 함수] MAX - 최대값 반환

by ㅇㅍㅍ 2023. 8. 9.
[오라클 레퍼런스 함수] MAX - 최대값 반환
728x90

 

 

 

 

MAX

 

구문

MAX([ DISTINCT | ALL ] expr) [ OVER (analytic_clause) ]

 

참고:

구문, 의미, 그리고 제한 사항에 대한 정보는 "Analytic Functions"에 대한 내용을 참조하세요.

 

목적

MAXexpr의 최대값을 반환합니다. 이 함수는 집계(aggregaate) 함수 또는 분석(analytic) 함수로 사용할 수 있습니다.

 

참고:

  • expr의 유효한 형태에 대한 정보는 "About SQL Expressions", 이진 부동 소수점 숫자 비교 의미론에 대한 정보는 "Floating-Point Numbers", 집계 함수에 대한 정보는 "Aggregate Functions"를 참조하세요.
  • Oracle Database Globalization Support Guide의 부록 C는 MAX 함수가 expr의 문자 값 비교에 사용하는 정렬 결정 규칙(collation determination rules) 및 문자 값일 때 이 함수의 반환 값에 할당되는 정렬 파생 규칙(collation derivation rules)에 대한 정보를 제공합니다.

 

집계 예제

다음 예제는 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.

 


출처: 오라클 레퍼런스

원문 링크: Oracle MAX 함수 문서

 

반응형

댓글