728x90

Oracle SQL의 MIN() 함수는 집계 함수(Aggregate Function) 중 하나로, 주어진 칼럼에서 가장 작은 값을 반환합니다. 숫자형, 날짜형, 문자열 데이터에도 모두 적용 가능하며, 실무에서 자주 사용되는 강력한 함수입니다. 이 글에서는 MIN 함수의 기초부터 고급 활용까지 실무 예제를 중심으로 설명합니다.
1. MIN() 함수란?
MIN() 함수는 지정된 칼럼 내에서 가장 작은 값을 반환합니다. NULL 값은 제외되며, 숫자, 날짜, 문자열 모두 사용 가능합니다.
SELECT MIN(salary) FROM employees;
2. 숫자형 데이터에 적용
가장 낮은 급여를 찾고 싶을 경우 다음과 같이 사용합니다.
SELECT MIN(salary) AS min_salary FROM employees;
3. 날짜형 데이터에 적용
가장 오래된 입사일자를 조회할 수 있습니다.
SELECT MIN(hire_date) AS earliest_hire FROM employees;
4. 문자열 데이터에 적용
사전순으로 가장 앞선 이름을 반환합니다.
SELECT MIN(first_name) AS alphabetically_first FROM employees;
5. GROUP BY와 함께 MIN()
부서별 최소 급여를 알고 싶을 때 사용됩니다.
SELECT department_id, MIN(salary) AS min_salary
FROM employees
GROUP BY department_id;
6. 조건을 포함한 MIN()
WHERE 절과 함께 사용하여 조건에 맞는 최솟값을 구할 수 있습니다.
SELECT MIN(salary) AS min_sales_salary
FROM employees
WHERE department_id = 80;
7. 서브쿼리로 활용
최솟값을 가진 직원의 정보를 조회하는 예제:
SELECT *
FROM employees
WHERE salary = (SELECT MIN(salary) FROM employees);
8. 분석 함수로의 확장
부서별 최소 급여를 각 행마다 표시:
SELECT employee_id, department_id, salary,
MIN(salary) OVER (PARTITION BY department_id) AS min_dept_salary
FROM employees;
9. MIN()과 CASE WHEN 조합
조건부 집계를 할 수 있습니다.
SELECT MIN(CASE WHEN job_id = 'IT_PROG' THEN salary END) AS min_it_salary
FROM employees;
10. 실무 예제 모음
10.1 최근 입사자 연도 확인
SELECT TO_CHAR(MIN(hire_date), 'YYYY') AS first_year
FROM employees;
10.2 직무별 최저 급여
SELECT job_id, MIN(salary) AS min_salary
FROM employees
GROUP BY job_id;
10.3 특정 부서의 가장 오래 근속한 직원
SELECT * FROM employees
WHERE hire_date = (
SELECT MIN(hire_date)
FROM employees
WHERE department_id = 90
);
11. 성능 및 주의사항
- MIN()는 NULL 값을 무시합니다.
- GROUP BY와 함께 사용할 때는 인덱스 활용 여부를 확인하세요.
- 문자열에 사용하는 경우 사전순 정렬이 기준입니다.
12. 자주 묻는 질문 (FAQ)
Q1. MIN() 함수는 NULL도 포함하나요?
A. 아니요, NULL은 자동으로 제외됩니다.
Q2. MIN() 함수는 어떤 데이터 타입에 사용할 수 있나요?
A. 숫자, 날짜, 문자열 등 거의 모든 데이터 타입에 사용 가능합니다.
Q3. ORDER BY와의 차이는 무엇인가요?
A. ORDER BY는 정렬, MIN()은 집계입니다. 목적이 다릅니다.
13. 요약
Oracle의 MIN() 함수는 단순한 최솟값 계산뿐 아니라, 다양한 조건과 집계 방식으로 활용될 수 있습니다. GROUP BY, 분석 함수, 서브쿼리 등과 조합하여 강력한 분석 도구로 발전시킬 수 있습니다.
출처
- Oracle 공식 문서: https://docs.oracle.com/en/database/
- Oracle Live SQL: https://livesql.oracle.com
- Stack Overflow: 실무 활용 Q&A
728x90
'Database > Oracle' 카테고리의 다른 글
| [ORACLE] STDDEV() 함수로 표준편차 계산하는 방법 (0) | 2025.06.01 |
|---|---|
| [ORACLE] MAX() 함수로 그룹 별 최대 값 구하는 법 (0) | 2025.06.01 |
| [ORACLE] MEDIAN() vs AVG() : 중간 값과 평균 값 차이 이해하기 (0) | 2025.06.01 |
| [ORACLE] COUNT() vs COUNT(*) 차이점과 성능 비교 (0) | 2025.06.01 |
| [ORACLE] AVG() 함수 완벽 정리 : 평균 계산의 모든 것 (0) | 2025.05.31 |