Oracle에서 사용할 수 있는 내장함수 가운데서 GROUP BY절과 함께 사용하기도 해서 그룹함수라고도 불리는 집계함수들이 있습니다. 이 함수는 여러 행의 그룹을 묶어서 단일 행을 반환합니다. 이 집계 함수들은 다음과 같습니다.
1. 집계함수 (그룹함수)
| 함수명 | 양식 | 기능 설명 | 
| COUNT | COUNT(expr) | - 쿼리에서 반환한 행 수를 반환 - 컬럼명을 지정하면 null이 아닌 행 수를 반환 - 컬럼명에 DISTICT를 지정하면 중복을 제외한 행 수를 반환 - 별표(*)를 지정하면 중복 및 null을 포함한 모든 행을 반환 | 
| SUM | SUM(expr) | - 쿼리에서 반환한 행들의 합계 값을 반환 - 숫자형 컬럼에 사용 | 
| AVG | AVG(expr) | - 쿼리에서 반환한 행들의 평균 값을 반환 - 숫자형 컬럼에 사용 - null인 레코드는 제외하고 계산 | 
| MAX MIN | MAX(expr) MIN(expr) | - 쿼리에서 반환한 행들 가운데서 최대값을 반환 - 쿼리에서 반환한 행들 가운데서 최소값을 반환 - 숫자형, 문자형, 날짜형 모두 가능 | 
| VARIANCE | VARIANCE(expr) | - 쿼리에서 반환한 행들 값의 분산을 반환 | 
| STDDEV | STDDEV(expr) | - 쿼리에서 반환한 행들 값의 표준편차를 반환 | 
1.1 COUNT(expr)
COUNT(expr)
- 쿼리에서 반환한 행 수를 반환
- 컬럼명을 지정하면 null이 아닌 행 수를 반환
- 컬럼명에 DISTICT를 지정하면 중복을 제외한 행 수를 반환
- 별표(*)를 지정하면 중복 및 null을 포함한 모든 행을 반환
SELECT COUNT(*), COUNT(employee_id) FROM employees;
       --------  ------------------
       107       107
SELECT DISTINCT department_id FROM employees;
SELECT COUNT(DISTINCT department_id) FROM employees;
       -----------------------------
       11
보다 상세한 설명은 아래 링크를 참고해 주세요.
Select count(*), count(1), count(column_name), count(DISTINCT column_name) 차이점
1.2 SUM(expr)
SUM(expr)
- 쿼리에서 반환한 행들의 합계 값을 반환
- 숫자형 컬럼에 사용
- null인 레코드는 제외하고 계산
SELECT SUM(salary) FROM employees;
       -----------
       691416
1.3 AVG(expr)
AVG(expr)
- 쿼리에서 반환한 행들의 평균값을 반환
- 숫자형 컬럼에 사용
- null인 레코드는 제외하고 계산
SELECT AVG(salary) FROM employees;
       -----------
       6461.831775700934579439252336448598130841
1.4 MAX(expr), MIN(expr)
MAX(expr)
- 쿼리에서 반환한 행들 가운데서 최댓값을 반환
- 숫자형, 문자형, 날짜형 모두 가능
MIN(expr)
- 쿼리에서 반환한 행들 가운데서 최솟값을 반환
- 숫자형, 문자형, 날짜형 모두 가능
SELECT MIN(salary), MAX(salary) FROM employees;
       -----------  -----------
       2100         24000
SELECT MIN(department_id), MAX(department_id) FROM employees;
       ------------------  ------------------
                     [10]               [110]
1.5 VARIANCE(expr)
VARIANCE(expr) : 쿼리에서 반환한 행들 값의 분산을 반환
SELECT VARIANCE(salary) FROM employees;
       ----------------
       15284813.66954681713983424440134015164874
1.6 STDDEV(expr)
STDDEV(expr) : 쿼리에서 반환한 행들 값의 표준편차를 반환
SELECT STDDEV(salary) FROM employees;
       --------------
       3909.579730552481921059198878167256201202
1.7 평균, 분산, 표준편차
두 반의 평균, 분산, 표준편차
---------------------------------------------------------------------
분산 (400+100+0+100+400)/5  = 200   평균에 대한 편차 제곱의 평균
표춘편차           root 200 = 14.14 분산의 양의 제곱근
---------------------------------------------------------------------
    -20, -10,   0,  10,  20 - 평균과의 차이
A반  50,  60,  70,  80,  90 = 평균 : 70, 분산 : 200, 표준편차 : 14.14
B반  70,  70,  70,  70,  70 = 평균 : 70, 분산 : 0,   표준편차 : 0
참고
https://docs.oracle.com/database/121/SQLRF/functions003.htm#SQLRF20035
'Dev. Handbook > SQL, Oracle, MariaDB' 카테고리의 다른 글
| [MariaDB] Data Type, 데이터 타입, 데이터형, 자료형 10.3, 10.4 (0) | 2022.11.09 | 
|---|---|
| [MySQL, MariaDB] MySQL, MariaDB 버전별 호환성 (0) | 2022.11.05 | 
| [Oracle] 내장함수 : 비교함수, 디코딩 함수 (0) | 2022.05.22 | 
| [Oracle] 내장 함수 : NULL 관련 함수 (1) | 2022.05.14 | 
| [Oracle] 내장 함수 : 형 변환 함수 (0) | 2022.05.13 | 
댓글