본문 바로가기
Database

[ Oracle] 오라클 STATS_MODE() 함수, GROUP BY와 함께 활용하는 방법

by 코드개미 2025. 6. 22.

오라클 STATS_MODE() 함수, GROUP BY와 함께 활용하는 방법
Oracle STATS_MODE()

 

 

Oracle SQLSTATS_MODE() 함수는 데이터 집합에서 가장 자주 등장하는 값(즉, 최빈값)을 반환하는 통계 함수입니다. 이 함수는 데이터 분석에서 패턴을 파악하고, 이상치를 감지하거나 주요 요소를 추출하는 데 유용합니다.

1. STATS_MODE() 함수란?

STATS_MODE() 함수는 지정된 칼럼에서 가장 빈도수가 높은 값을 반환합니다. 최빈값(mode)은 통계에서 가장 자주 나타나는 수치이며, 평균이나 중앙값과는 다른 분석 기준을 제공합니다.

SELECT STATS_MODE(department_id) FROM employees;

2. 함수 특징

  • 오직 Oracle 10g 이상에서 사용 가능
  • 숫자형, 문자형 모두 사용 가능
  • NULL 값은 자동으로 제외됨
  • 동일 빈도값이 여러 개일 경우: 가장 작은 값 반환

3. 기본 사용 예제

3.1 부서 ID 중 가장 빈도 높은 값

SELECT STATS_MODE(department_id) AS most_common_dept
FROM employees;

3.2 직무 코드 중 가장 자주 등장한 코드

SELECT STATS_MODE(job_id) AS popular_job
FROM employees;

4. GROUP BY와 함께 사용

STATS_MODE는 집계 함수이므로 GROUP BY와 함께 그룹별 최빈값도 구할 수 있습니다.

SELECT department_id, STATS_MODE(job_id) AS common_job
FROM employees
GROUP BY department_id;

5. 실무 활용 예제

5.1 월별 최빈 판매 상품 조회

SELECT TO_CHAR(sale_date, 'YYYY-MM') AS sale_month,
       STATS_MODE(product_id) AS top_product
FROM sales
GROUP BY TO_CHAR(sale_date, 'YYYY-MM');

5.2 고객 나이대 최빈값 구하기

SELECT STATS_MODE(age_group) AS most_common_age
FROM customers;

5.3 특정 부서에서 가장 자주 등장한 직책

SELECT STATS_MODE(job_id) AS common_job
FROM employees
WHERE department_id = 60;

6. STATS_MODE()와 비교 가능한 함수들

함수명 기능 사용 예시
AVG() 평균값 SELECT AVG(salary) FROM employees;
MEDIAN() 중앙값 SELECT MEDIAN(salary) FROM employees;
STATS_MODE() 최빈값 SELECT STATS_MODE(salary) FROM employees;

7. 주의사항 및 한계

  • 동일 빈도로 여러 값이 존재할 경우, 가장 낮은 값이 반환됨
  • 데이터 분포가 고르게 되어 있는 경우, 실질적인 분석 효과가 떨어질 수 있음
  • 대용량 데이터에서는 성능 저하 발생 가능
  • NULL은 자동 제외되지만, 예외 처리를 명시적으로 하지 않으면 오류 발생 가능성 존재

8. 고급 사용 팁

8.1 NULL 처리와 함께 사용

SELECT STATS_MODE(NVL(department_id, 0))
FROM employees;

8.2 PIVOT과 함께 사용

SELECT * FROM (
  SELECT department_id, job_id
  FROM employees)
PIVOT (
  STATS_MODE(job_id) FOR department_id IN (10, 20, 30, 40)
);

9. FAQ - 자주 묻는 질문

Q1. STATS_MODE()는 문자열에도 사용 가능한가요?

A. 네, 문자형 칼럼에도 적용 가능합니다.

Q2. 동일 빈도값이 많을 경우 결과는?

A. 가장 낮은 값을 반환합니다.

Q3. NULL은 포함되나요?

A. 포함되지 않으며, 자동으로 제외됩니다.

10. 요약

STATS_MODE() 함수는 평균, 중앙값과 함께 쓰이는 대표적인 통계 분석 함수로, 데이터 집합에서 가장 자주 나타나는 값을 쉽게 추출할 수 있도록 도와줍니다. GROUP BY, PIVOT, 조건문과 결합하여 더욱 강력한 분석 도구로 활용할 수 있습니다.

출처