티스토리 뷰
1. 집계함수(Aggregate Function)
- 특성
n 여러 행들의 그룹이 모여서 그룹당 단 하나의 결과를 반환하는 함수
n GROUP BY 절은 행들을 소그룹화
n SELECT 절, HAVING 절, ORDER BY 절에 사용
- 집계함수 명 ( ALL칼럼이나 표현식)
n ALL : Default 옵션이므로 생략 가능
n DISTINCT : 같은 값을 하나의 데이터로 간주할 때 사용하는 옵션
집계 함수 |
사용 목적 |
COUNT(*) |
NULL 값을 포함한 행의 수를 출력한다. |
COUNT(표현식) |
표현식의 값이 NULL 값인 것을 제외한 행의 수를 출력한다. |
SUM([DISTINCT | ALL] 표현식) |
표현식의 NULL 값을 제외한 합계를 출력한다. |
AVG([DISTINCT | ALL] 표현식) |
표현식의 NULL 값을 제외한 평균을 출력한다. |
MAX([DISTINCT | ALL] 표현식) |
표현식의 최대값을 출력한다. (문자, 날짜 데이터 타입도 사용가능) |
MIN([DISTINCT | ALL] 표현식) |
표현식의 최소값을 출력한다. (문자, 날짜 데이터 타입도 사용가능) |
STDDEV([DISTINCT | ALL] 표현식) |
표현식의 표준 편차를 출력한다. |
VARIAN([DISTINCT | ALL] 표현식) |
표현식의 분산을 출력한다. |
기타 통계 함수 |
벤더별로 다양한 통계식을 제공한다. |
2. GROUP BY 절
- FROM 절과 WHERE절 뒤에 오며, 데이터들을 작은 그룹으로 분류하여 소그룹에 대한 항목별로 통계정보를 얻을 때 추가로 사용
- GROUP BY 절과 HAVING절의 특성
n GROUP BY 절을 통해 소그룹별 기준을 정한 후, SELECT 절에 집계 함수 사용한다.
n 집계 함수의 통계정보는 NULL 값을 가진 행을 제외하고 수행한다.
n GROUP BY 절에서는 SELECT 절과 달리 ALIAS 명을 사용할 수 없다.
n 집계 함수는 WHERE 절에는 올 수 없다. (GROUP BY 절보다 WHERE 절이 먼저 수행된다.)
n WHERE 절은 전체 데이터를 GROUP으로 나누기 전에 행들을 미리 제거한다.
n HAVING절은 GROUP BY 절의 기준 항목이나 소그룹의 집계 함수를 이용한 조건을 표시할 수 있다.
n GROUP BY 절에 의한 소그룹별로 만들어진 집계 데이터 중, HAVING절에서 제한 조건을 두어 조건을 만족하는 내용만 출력한다.
n HAVING절은 일반적으로 GROUP BY절 뒤에 위치한다.
3. HAVING 절
- HAVING절은 SELECT 절에 사용되지 않은 칼럼이나 집계 함수가 아니더라도 GROUP BY 절의 기준 항목이나 소그룹의 집계 함수를 이용한 조건을 표시할 수 있다.
- 주의] WHERE 절의 조건 변경은 대상 데이터의 개수가 변경되므로 결과 데이터 값이 변경될 수 있지만, HAVING절의 조건 변경은 결과 데이터 변경은 없고 출력되는 레코드의 개수만 변경될 수 있다.
4. CASE 표현을 활용한 월별 데이터 집계
- 모델링의 제1정규화로 인해 반복되는 칼럼의 경우 구분 칼럼을 두고 여러 개의 레코드로 만들어진 집합을, 정해진 칼럼 수 만큼 확장해서 집계보고서를 만드는 기법
5. 집계 함수와 NULL 처리
- 다중행 함수에 NVL함수(NULL 처리)를 사용하면 부하가 발생한다.
'자격증 > SQLD' 카테고리의 다른 글
SQLD - SQL 기본 [조인(JOIN)] (0) | 2017.08.11 |
---|---|
SQLD - SQL 기본 [ORDER BY 절] (0) | 2017.08.07 |
SQLD - SQL 기본 [함수] (0) | 2017.08.07 |
SQLD - SQL 기본 [WHERE] (0) | 2017.08.05 |
SQLD - SQL 기본 [TCL] (0) | 2017.08.04 |