본문 바로가기
Database

[ORACLE] MEDIAN() vs AVG() : 중간 값과 평균 값 차이 이해하기

by Dev. Orion 2025. 6. 1.

오라클 MEDIAN() vs AVG(): 중간 값과 평균 값 차이 이해하기
Oracle MEDIAN()

 

 

 

Oracle SQL의 MEDIAN() 함수는 데이터 집합에서 중간값(Median)을 계산하는 데 사용되는 강력한 통계 함수입니다. 평균(AVG()) 함수가 모든 값의 합을 기준으로 한다면, MEDIAN() 함수는 값의 분포를 고려한 중심값을 제공합니다. 특히 이상치(Outlier)에 민감하지 않기 때문에 정확한 통계 분석이 필요한 환경에서 유용하게 사용됩니다.

1. MEDIAN() 함수 개요

MEDIAN() 함수는 Oracle에서 제공하는 집계 함수로, 지정된 칼럼의 중간값을 반환합니다. 이 함수는 단순 집계뿐 아니라 GROUP BY, PARTITION BY 등과 함께 사용될 수 있습니다.

SELECT MEDIAN(salary) FROM employees;

2. MEDIAN() 함수의 특징

  • 숫자형 데이터에서만 사용할 수 있습니다.
  • NULL 값은 무시됩니다.
  • 홀수 개 데이터: 정확한 중간값 반환
  • 짝수 개 데이터: 두 중간값의 평균 반환

3. 기본 사용 예제

3.1 전체 급여의 중간값 구하기

SELECT MEDIAN(salary) AS median_salary
FROM employees;

3.2 조건부 중간값 계산

SELECT MEDIAN(salary) AS median_sales_salary
FROM employees
WHERE department_id = 80;

4. GROUP BY와 MEDIAN()

GROUP BY 절과 함께 사용하면 그룹별 중간값을 계산할 수 있습니다.

SELECT department_id, MEDIAN(salary) AS dept_median_salary
FROM employees
GROUP BY department_id;

5. 분석 함수(Analytic Function)로서의 MEDIAN()

Oracle은 12c 이상에서 MEDIAN() OVER() 구문을 통해 분석 함수로도 제공합니다.

SELECT employee_id, department_id, salary,
       MEDIAN(salary) OVER (PARTITION BY department_id) AS dept_median_salary
FROM employees;

6. 실무 응용 예제

6.1 직무별 급여의 중간값

SELECT job_id, MEDIAN(salary) AS median_salary
FROM employees
GROUP BY job_id;

6.2 부서별 입사연도 기준 중간값

SELECT department_id,
       MEDIAN(TO_NUMBER(TO_CHAR(hire_date, 'YYYY'))) AS median_hire_year
FROM employees
GROUP BY department_id;

6.3 직무별 중간급여가 전체 평균 이상인 경우

SELECT job_id, MEDIAN(salary) AS median_salary
FROM employees
GROUP BY job_id
HAVING MEDIAN(salary) > (SELECT AVG(salary) FROM employees);

7. MEDIAN()과 AVG()의 차이

항목 MEDIAN() AVG()
중심값 기준 중간값 산술 평균
이상치 영향 영향 적음 영향 큼
정렬 필요 내부적으로 정렬 불필요

8. 성능 주의사항

  • MEDIAN()은 내부적으로 정렬 연산이 필요하므로 대용량 데이터에서는 성능 이슈 발생 가능
  • 인덱스를 활용하기 어려운 구조
  • 복잡한 쿼리에서는 PERCENTILE_CONT 함수와 비교 고려 가능

9. MEDIAN()과 관련 함수

  • PERCENTILE_CONT(0.5) – 중간값과 동일한 기능 수행 (통계 분석용)
  • NTILE() – 분위수 계산
  • RANK(), DENSE_RANK() – 순위 기반 분석

10. 요약

MEDIAN() 함수는 평균보다 데이터 분포를 더 정확히 반영할 수 있는 통계적 분석 도구입니다. 특히 급여, 연봉, 구매 금액 등에서 이상치 영향을 줄이고자 할 때 매우 유용합니다. 단, 성능에 민감한 환경에서는 주의가 필요하며 PARTITION이나 GROUP BY와 조합해 사용할 수 있습니다.

출처