본문 바로가기
Dev. Handbook/SQL, Oracle, MariaDB

[Oracle] 내장함수 : 집계함수(그룹함수)

by breezyday 2022. 5. 23.

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

 

 

 

 

 

댓글