본문 바로가기
Database/Oracle

[ORACLE] VARIANCE()로 분산 분석하기 : GROUP BY와 함께 활용하는 방법

by Papa Martino V 2025. 6. 1.
728x90

오라클 VARIANCE()로 분산 분석하기: GROUP BY와 함께 활용하는 방법
Oracle VARIANCE()

 

 

Oracle SQL에서 VARIANCE() 함수는 데이터 집합의 분산(Variance)을 계산하는 통계 함수입니다. 분산은 데이터가 평균값을 기준으로 얼마나 흩어져 있는지를 수치로 나타내며, STDDEV() 함수의 제곱 값이기도 합니다. 본 가이드는 Oracle에서 VARIANCE() 함수를 활용하는 다양한 방법을 실무 중심 예제와 함께 설명합니다.

1. VARIANCE() 함수란?

VARIANCE() 함수는 수치형 칼럼의 데이터에 대해 표본 분산을 계산합니다. Oracle은 VARIANCE() 외에도 VAR_POP() 함수를 제공하며, 이 둘은 계산 방식에서 차이가 있습니다.

SELECT VARIANCE(salary) AS salary_variance
FROM employees;

2. 분산(Variance)의 개념

  • 분산은 각 값에서 평균을 뺀 값의 제곱 평균
  • 공식: ∑(x - 평균)^2 / (n - 1)
  • 단위가 원래 값의 제곱이므로 해석 시 주의 필요
  • 표준편차(STDDEV())는 분산의 제곱근

3. VARIANCE() 기본 사용법

직원 급여의 분산을 계산하는 기본 쿼리:

SELECT VARIANCE(salary) AS salary_variance
FROM employees;

4. VARIANCE() + GROUP BY

부서별 급여 분산을 확인:

SELECT department_id, VARIANCE(salary) AS dept_variance
FROM employees
GROUP BY department_id;

5. 조건에 따른 분산 분석

특정 부서나 직무 조건을 지정하여 분산 계산:

SELECT VARIANCE(salary) AS variance_sales
FROM employees
WHERE department_id = 80;

6. 분석 함수로 활용하기 (Analytic Function)

Oracle에서는 VARIANCE() 함수도 분석 함수 형태로 사용할 수 있습니다.

SELECT employee_id, department_id, salary,
       VARIANCE(salary) OVER (PARTITION BY department_id) AS dept_variance
FROM employees;

7. 실무 활용 예제

7.1 직무별 급여 분산 비교

SELECT job_id, VARIANCE(salary) AS variance_salary
FROM employees
GROUP BY job_id;

7.2 월별 매출의 분산

SELECT TO_CHAR(sales_date, 'YYYY-MM') AS sales_month,
       VARIANCE(amount) AS monthly_variance
FROM sales
GROUP BY TO_CHAR(sales_date, 'YYYY-MM');

7.3 부서별 급여 분산이 전체보다 큰 부서

SELECT department_id
FROM employees
GROUP BY department_id
HAVING VARIANCE(salary) > (SELECT VARIANCE(salary) FROM employees);

8. VARIANCE()와 VAR_POP()의 차이

함수 설명 용도
VARIANCE() 표본 기반 분산 (n-1) 일반적인 통계 분석용
VAR_POP() 모집단 기반 분산 (n) 전체 데이터 집합 분석용

9. 성능 주의사항

  • GROUP BY나 분석 함수 사용 시 정렬 비용 발생 가능
  • NULL은 자동으로 무시되며, NULL 비율이 높으면 왜곡 가능성 있음
  • 대용량 데이터 처리 시 인덱스와 병렬처리 옵션 고려

10. 자주 묻는 질문 (FAQ)

Q1. VARIANCE()는 NULL을 포함하나요?

A. 포함하지 않습니다. NULL은 자동으로 제외됩니다.

Q2. VARIANCE()는 어떤 데이터 타입에 사용할 수 있나요?

A. 숫자형(Numeric) 칼럼에만 적용됩니다.

Q3. VARIANCE()는 AVG()와 함께 사용 가능한가요?

A. 가능합니다. 평균과 분산을 함께 계산하여 데이터를 다면적으로 분석할 수 있습니다.

11. 요약

Oracle의 VARIANCE() 함수는 데이터 분산도를 계산하여 값들의 퍼짐 정도를 분석할 수 있는 강력한 통계 함수입니다. 평균이나 최댓값/최솟값만으로 파악하기 어려운 데이터를 보다 정밀하게 해석하는 데 유용하며, GROUP BY, OVER(), HAVING과 같은 SQL 구문과 결합해 다양한 실무 분석에 적용할 수 있습니다.

출처

728x90