- 카테고리:
집계 함수 (일반)
MAX_BY¶
열의 최대값을 포함하는 행을 찾고 해당 행에 있는 다른 열의 값을 반환합니다.
예를 들어, 테이블에 employee_id
및 salary
열이 포함된 경우 MAX_BY(employee_id, salary)
는 salary
열에서 가장 높은 값을 가진 행에 대해 employee_id
열의 값을 반환합니다.
여러 행에 지정된 최대값이 포함된 경우 이 함수는 비결정적입니다.
여러 행의 값을 반환하려면 선택적 maximum_number_of_values_to_return
인자를 지정하십시오. 이 추가 인자 사용:
이 함수는 지정된 열의 가장 높은 값이 있는 행의 열 값을 포함하는 ARRAY 를 반환합니다.
ARRAY의 값은 최대값을 포함하는 열의 해당 값을 기준으로 정렬됩니다.
여러 행에 이러한 가장 높은 값이 포함된 경우 이 함수는 비결정적입니다.
예를 들어, MAX_BY(employee_id, salary, 5)
는 salary
열에서 가장 높은 값을 포함하는 5개 행에 대한 employee_id
열의 값으로 구성된 ARRAY를 반환합니다. ARRAY의 ID는 salary
열의 해당 값을 기준으로 정렬됩니다.
- 참고 항목:
구문¶
MAX_BY( <col_to_return>, <col_containing_maximum> [ , <maximum_number_of_values_to_return> ] )
인자¶
필수:
col_to_return
반환할 값이 포함된 열.
col_containing_maximum
최대값을 포함하는 열.
선택 사항:
maximum_number_of_values_to_return
반환할 값의 최대 개수를 지정하는 상수 정수. 양수를 지정해야 합니다. 지정할 수 있는 최대 개수는
1000
입니다.
반환¶
maximum_number_of_values_to_return
이 지정되지 않은 경우 이 함수는col_to_return
과 동일한 유형의 값을 반환합니다.maximum_number_of_values_to_return
이 지정된 경우 이 함수는col_to_return
과 동일한 유형의 값을 포함하는 ARRAY를 반환합니다. ARRAY의 값은 해당col_containing_maximum
값을 기준으로 정렬됩니다.예를 들어,
MAX_BY(employee_id, salary, 5)
는salary
기준으로 정렬된(내림차순) 가장 높은 급여를 받는 상위 5명의 직원 ID를 반환합니다.
사용법 노트¶
이 함수는
col_containing_maximum
의 NULL 값을 무시합니다.col_containing_maximum
의 모든 값이 NULL인 경우 (선택적maximum_number_of_values_to_return
인자가 지정되었는지 여부에 관계없이) 이 함수는 NULL을 반환합니다.
예¶
다음 예는 MAX_BY 함수 사용 방법을 보여줍니다.
이러한 예를 실행하려면 다음 문을 실행하여 예에 대한 테이블과 데이터를 설정하십시오.
CREATE OR REPLACE TABLE employees(employee_id NUMBER, department_id NUMBER, salary NUMBER);
INSERT INTO employees VALUES
(1001, 10, 10000),
(1020, 10, 9000),
(1030, 10, 8000),
(900, 20, 15000),
(2000, 20, NULL),
(2010, 20, 15000),
(2020, 20, 8000);
이 테이블의 내용을 보려면 다음 문을 실행하십시오.
SELECT * FROM employees;
+-------------+---------------+--------+
| EMPLOYEE_ID | DEPARTMENT_ID | SALARY |
|-------------+---------------+--------|
| 1001 | 10 | 10000 |
| 1020 | 10 | 9000 |
| 1030 | 10 | 8000 |
| 900 | 20 | 15000 |
| 2000 | 20 | NULL |
| 2010 | 20 | 15000 |
| 2020 | 20 | 8000 |
+-------------+---------------+--------+
다음 예에서는 최고 급여를 받는 직원의 ID를 반환합니다.
SELECT MAX_BY(employee_id, salary) FROM employees;
+-----------------------------+
| MAX_BY(EMPLOYEE_ID, SALARY) |
|-----------------------------|
| 900 |
+-----------------------------+
다음 사항을 참고하십시오.
둘 이상의 행에
salary
열의 최대값이 포함되어 있으므로 이 함수는 비결정적이며 후속 실행에서 다른 행에 대해 직원 ID를 반환할 수 있습니다.이 함수는 최대값이 있는 행을 결정할 때
salary
열의 NULL 값을 무시합니다.
다음 예에서는 최고 급여를 받는 상위 3명의 직원 ID를 포함하는 ARRAY를 반환합니다.
SELECT MAX_BY(employee_id, salary, 3) from employees;
+--------------------------------+
| MAX_BY(EMPLOYEE_ID, SALARY, 3) |
|--------------------------------|
| [ |
| 900, |
| 2010, |
| 1001 |
| ] |
+--------------------------------+
예에 표시된 대로, ARRAY의 값은 salary
열의 해당 값을 기준으로 정렬됩니다. 따라서 MAX_BY는 급여를 기준으로 내림차순으로 정렬된 직원의 ID를 반환합니다.
이러한 행 중 두 개 이상이 salary
열에 동일한 값을 포함하는 경우 해당 급여에 대해 반환된 값의 순서는 비결정적입니다.