728x90

Oracle SQL에서 MAX() 함수는 집계 함수(Aggregate Function) 중 하나로, 지정된 칼럼 내에서 가장 큰 값을 반환합니다. 이 함수는 숫자형뿐 아니라 날짜형 데이터에도 사용되며, 그룹 단위 또는 전체 데이터에서의 최댓값을 추출하는 데 유용합니다. 본 글에서는 실무 개발자가 이해하기 쉽도록 다양한 예제와 함께 MAX 함수의 사용법을 정리했습니다.
1. MAX() 함수 개요
MAX() 함수는 SQL에서 특정 칼럼의 최댓값을 반환합니다. NULL 값은 자동으로 제외됩니다.
SELECT MAX(salary) FROM employees;
2. 기본 사용법
2.1 숫자형 데이터
SELECT MAX(salary) FROM employees;
직원 급여 중 최고 급여를 반환합니다.
2.2 날짜형 데이터
SELECT MAX(hire_date) FROM employees;
가장 최근 입사일자를 반환합니다.
3. GROUP BY와 함께 사용
부서별 최고 급여를 알고 싶을 경우:
SELECT department_id, MAX(salary)
FROM employees
GROUP BY department_id;
4. 서브쿼리와의 조합
최고 급여를 받은 직원의 정보를 조회:
SELECT *
FROM employees
WHERE salary = (SELECT MAX(salary) FROM employees);
5. 분석 함수로 사용
SELECT employee_id, salary,
MAX(salary) OVER (PARTITION BY department_id) AS max_dept_salary
FROM employees;
각 부서에서의 최고 급여를 모든 행에 보여줍니다.
6. 다중 칼럼과 함께 사용
특정 조건이 있는 경우:
SELECT department_id, job_id, MAX(salary)
FROM employees
WHERE job_id LIKE 'SA%'
GROUP BY department_id, job_id;
7. MAX()와 CASE 문
특정 조건을 가진 최댓값 구하기:
SELECT MAX(CASE WHEN department_id = 60 THEN salary ELSE NULL END) AS max_sales_salary
FROM employees;
8. 실무 활용 예제
8.1 최고 입사 연도 찾기
SELECT MAX(TO_CHAR(hire_date, 'YYYY')) AS latest_hire_year
FROM employees;
8.2 특정 부서에서 최고 급여 직원 정보
SELECT * FROM employees e
WHERE salary = (
SELECT MAX(salary) FROM employees
WHERE department_id = e.department_id
);
9. 성능 고려 사항
MAX()는 인덱스가 있을 경우 효율적이나, GROUP BY가 포함되면 정렬 비용 발생 가능- NULL은 자동으로 제외되므로 NULL이 포함된 칼럼일 경우 주의 필요
- 집계함수와 함께 사용할 때는 WHERE 절과 GROUP BY 절의 조건 충돌에 주의
10. MAX() 함수 자주 묻는 질문 (FAQ)
Q1. MAX()는 문자열에도 사용할 수 있나요?
A. 사용 가능합니다. 사전순으로 가장 큰 값을 반환합니다.
Q2. NULL은 어떻게 처리되나요?
A. NULL은 무시됩니다. 즉, NULL을 포함한 칼럼이라도 유효한 값만으로 최댓값을 계산합니다.
Q3. HAVING 절과 함께 사용할 수 있나요?
A. 가능합니다. 예: HAVING MAX(salary) > 10000
11. 요약
MAX() 함수는 단순한 집계부터 분석 함수, 조건부 집계까지 다양한 방식으로 활용될 수 있는 강력한 도구입니다. 특히 GROUP BY, 서브쿼리, 분석 함수와 결합할 경우 데이터 인사이트 도출에 큰 도움을 줍니다.
출처
- Oracle 공식 문서: https://docs.oracle.com/en/database/
- Oracle Live SQL 예제: https://livesql.oracle.com
- Stack Overflow, SQL Server Tutorials
728x90
'Database > Oracle' 카테고리의 다른 글
| [ORACLE] VARIANCE()로 분산 분석하기 : GROUP BY와 함께 활용하는 방법 (0) | 2025.06.01 |
|---|---|
| [ORACLE] STDDEV() 함수로 표준편차 계산하는 방법 (0) | 2025.06.01 |
| [ORACLE] MIN() 함수 사용법과 GROUP BY 절 실전 적용 (0) | 2025.06.01 |
| [ORACLE] MEDIAN() vs AVG() : 중간 값과 평균 값 차이 이해하기 (0) | 2025.06.01 |
| [ORACLE] COUNT() vs COUNT(*) 차이점과 성능 비교 (0) | 2025.06.01 |