그룹 함수
그룹 함수란?
- 그룹 함수들은 집계 함수(Aggregate function)이라고도 한다.
- 집계한 하나 이상의 데이터들을 대상으로 일종의 통계정보(전체 개수, 평군, 최대값, 최소값)를 말하며 집계 함수 역시 이러한 기능을 수행하는 함수들을 말한다.
- 단일 행 함수와 달리 그룹함수는 전체 집합 또는 그룹으로 분류된 집합에 작용하여 그룹당 하나의 결과를 생성한다.
그룹 함수 종류
그룹 함수 | 사용 목적 |
---|---|
COUNT(*) | - NULL 값을 포함한 행의 수 출력 |
COUNT(표현식) | - 표현식의 값이 NULL 값인 것을 제외한 행의 수 출력 |
SUM([DISTINCT | ALL] 표현식) |
AVG([DISTINCT | ALL] 표현식) |
MAX([DISTINCT | ALL] 표현식) |
MIN([DISTINCT | ALL] 표현식) |
STDDEV([DISTINCT | ALL] 표현식) |
VARIANCE([DISTINCT | ALL] 표현식) |
그룹 함수 사용 지침
- DISTINCT를 지정하면 함수는 중복되지 않는 값만 검토하고, ALL을 지정하면 중복 값을 포함한 값을 검토함
- ALL 키워드는 기본값이므로 별도로 사용할 필요가 없음
- COUNT(*)를 제외한 모든 그룹함수는 NULL 값을 제외하고 처리함
- NULL 값을 특정 값으로 치환 하려면 NVL 함수를 사용함
- 모든 데이터 타입에 MIN, MAX, COUNT 함수를 사용할 수 있음
- AVG, SUM, VARIANCE, STDDEV는 숫자 데이터 타입만 사용이 가능함
GROUP BY 절
- 테이블의 행을 더 작은 그룹으로 나눔
- 집계 함수 이외에 SELECT 절에 나오는 컬럼이나 값은 두 GROUP BY 절에 명시함 (상수 값 제외)
- 한 개 이상의 컬럼이나 값이 올 수 있음
- GROUP BY 절을 이용하여 그룹으로 묶은 후 SELECT 절에는 GROUP BY에서 사용한 <속성>과 집계 함수만 나올수 있음
- WHERE 조건절에 사용된 컬럼이나 값은 GROUP BY 절에 사용한 컬럼이나 값과 달라도 상관 없음
- WHERE 조건이 먼저 처리된 후 GROUP BY 및 집계 함수가 처리됨
- ORDER BY 절을 사용하면 그룹핑 한 결과를 일정한 순서로 볼 수 있음
HAVING절
- GROUP BY 절의 기준 항목이나 소그룹의 집계 함수를 이용한 조건을 표시할 수 있음
- WHERE절은 AGGREGATION 이전, HAVING 절은 AGGREGATION 이후의 FILTERING 작업을 수행함
- GROUP BY 절에 의해 소그룹 별로 만들어진 집계 데이터중, HAVING 절에서 제한 조건을 두어 조건을 만족하는 내용만 출력
- 그룹이 형성되고, 그룹함수가 계산된 후 HAVING 절이 적용됨
- 행이 분류됨(그룹 형성)
- 그룹 함수가 그룹에 적용됨
- HAVING 절의 조건에 일치하는 그룹이 표시됨