728x90

Oracle SQL에서 STDDEV() 함수는 통계 분석에서 핵심 개념인 표준편차(Standard Deviation)를 계산할 수 있게 해주는 집계 함수입니다. 평균(AVG)만으로는 데이터의 분산 정도를 파악하기 어려운 경우가 많기 때문에, STDDEV() 함수는 데이터의 흩어짐 정도를 분석할 때 유용하게 사용됩니다.
1. STDDEV() 함수란?
STDDEV() 함수는 입력된 수치형 칼럼의 표준편차를 반환합니다. 이 함수는 집계 함수로 단일 칼럼의 데이터 분산 정도를 수치화합니다.
SELECT STDDEV(salary) FROM employees;
2. 기본 개념 - 표준편차란?
- 표준편차는 각 데이터가 평균에서 얼마나 떨어져 있는지를 나타내는 통계 지표입니다.
- 값이 클수록 데이터의 변동성이 크다는 뜻입니다.
- 표준편차 공식: sqrt(∑(x - 평균)^2 / (n - 1))
3. STDDEV() 기본 사용법
SELECT STDDEV(salary) AS salary_stddev
FROM employees;
전체 직원의 급여 표준편차를 계산합니다.
4. STDDEV()와 GROUP BY
부서별 급여 표준편차를 계산할 수 있습니다.
SELECT department_id, STDDEV(salary) AS dept_salary_stddev
FROM employees
GROUP BY department_id;
5. 조건부 STDDEV()
특정 조건을 만족하는 데이터의 표준편차 계산:
SELECT STDDEV(salary) AS sales_stddev
FROM employees
WHERE department_id = 80;
6. 분석 함수 STDDEV() OVER()
Oracle에서는 STDDEV()를 분석 함수로 사용할 수 있어, 행별로 그룹 내 표준편차 값을 계산할 수 있습니다.
SELECT employee_id, department_id, salary,
STDDEV(salary) OVER (PARTITION BY department_id) AS dept_stddev
FROM employees;
7. 실무 활용 예제
7.1 직무별 급여 분산도 분석
SELECT job_id, STDDEV(salary) AS job_salary_stddev
FROM employees
GROUP BY job_id;
7.2 전체 평균보다 분산이 큰 부서 찾기
SELECT department_id
FROM employees
GROUP BY department_id
HAVING STDDEV(salary) > (SELECT STDDEV(salary) FROM employees);
7.3 월별 매출 표준편차 분석
SELECT TO_CHAR(sales_date, 'YYYY-MM') AS month,
STDDEV(amount) AS monthly_stddev
FROM sales
GROUP BY TO_CHAR(sales_date, 'YYYY-MM');
8. STDDEV()와 VARIANCE()의 차이
| 함수 | 의미 | 결과 |
|---|---|---|
| STDDEV() | 표준편차 (sqrt(분산)) | 원 단위와 동일 |
| VARIANCE() | 분산 (표준편차의 제곱) | 제곱된 단위 |
9. STDDEV() 성능 주의사항
- GROUP BY와 함께 사용할 경우, 많은 양의 데이터를 처리하므로 인덱스를 적절히 활용하세요.
- NULL 값은 자동으로 제외되며, NULL이 많은 경우 분석 결과가 왜곡될 수 있습니다.
- 분석 함수 OVER()는 OLAP에 적합하며, 대용량에서는 성능 튜닝이 필요할 수 있습니다.
10. STDDEV() 사용 시 자주 묻는 질문
Q1. STDDEV는 NULL 값을 포함하나요?
A. 아니요. STDDEV는 NULL 값을 자동으로 무시합니다.
Q2. STDDEV 함수는 어떤 타입의 칼럼에 사용할 수 있나요?
A. 숫자형(Numeric) 칼럼에만 사용 가능합니다.
Q3. STDDEV_POP과의 차이는?
A. STDDEV는 표본 표준편차(Sample), STDDEV_POP은 모집단 표준편차를 계산합니다.
11. 요약
STDDEV() 함수는 데이터의 퍼짐 정도를 분석하는 데 매우 유용하며, 단순 평균과 함께 사용하면 보다 입체적인 분석이 가능합니다. 특히 실무에서는 GROUP BY, HAVING, PARTITION BY 등과 결합하여 다양한 통계적 인사이트를 제공할 수 있습니다.
출처
- Oracle 공식 문서: https://docs.oracle.com/en/database/
- Oracle Live SQL 예제: https://livesql.oracle.com
- Stack Overflow SQL 분석 관련 질문
- Oracle SQL Developer 사용자 가이드
728x90
'Database > Oracle' 카테고리의 다른 글
| [ORACLE] LAG() 함수 : PARTITION BY와 함께 쓰는 고급 예제 (0) | 2025.06.01 |
|---|---|
| [ORACLE] VARIANCE()로 분산 분석하기 : GROUP BY와 함께 활용하는 방법 (0) | 2025.06.01 |
| [ORACLE] MAX() 함수로 그룹 별 최대 값 구하는 법 (0) | 2025.06.01 |
| [ORACLE] MIN() 함수 사용법과 GROUP BY 절 실전 적용 (0) | 2025.06.01 |
| [ORACLE] MEDIAN() vs AVG() : 중간 값과 평균 값 차이 이해하기 (0) | 2025.06.01 |