1. 집계함수
여러행들의 그룹이 모여 그룹당 단 하나의 결과를 돌려줌
GROUP BY는 행들을 소그룹화함
Select, having, order by 절에서 사용가능
함수 |
설명 |
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 절
SELECT [DISTINCT] 칼럼명 [ALIAS명]
FROM 테이블명
[WHERE 조건식]
[GROUP BY 칼럼(Column)이나 표현식]
[HAVING 그룹조건식] ;
GROUP BY절에서 소그룹화 후 SELECT절에서 집계함수 사용
NULL값 제외하고 행 수행
GROUP BY절에서는 별명 사용 불가
집계함수는 WHERE절에는 사용 불가
WHERE절은 전체데이터를 GROUP하기 전에 미리 제거
HAVING은 집계함수를 이용한 조건 표시
3. HAVING 절
WHERE절과 비슷하지만 그룹을 나타낸다는 결과 집합의 행에 조건이 적용된다는 점에서 차이가 있음
GROUP BY와 위치를 바꾸어도 문제가 생기진 않으나, 순서를 지키는 것을 권고
WHRER절에서 조건을 적용하여 데이터만 추출후 GROUP BY도 가능, 이 방법이 데이터 소모를 덜함
SELECT 절에 사용되지 않은 칼럼이나 집계함수가 아니더라고
GROUP BY절의 기준항목이나 소그룹의 집계함수를 HAVING절에서 사용가능
HAVING절의 조건변경은 결과 데이터 변경은 없고 출력되는 레코드 갯수만 변경
예제) SELECT POSITION 포지션, ROUND(AVG(HEIGHT),2) 평균키
FROM PLAYER
GROUP BY POSITION
HAVING MAX(HEIGHT) >= 190;
4. CASE 표현을 활용한 월별 데이터 집계
모델링의 제 1정규화로 인해 반복되는 칼럼의 경우 구분 칼럼을 두고 여러 개의 레코드로 만들어진 집합을
정해진 칼럼수만큼 확장해서 집계 보고서를 만드는 유용한 기법
STEP 1. 개별데이터 확인
STEP 2. 월별 데이터 구분 : SIMPLE CASE EXPRESSION을 통해 12월별 칼럼 구분
STEP 3. 부서별 데이터 집계 : 평균급여를 GROUP BY로 AVG하여 집계
DECODE 함수 가능
5. 집계함수와 NULL
NVL/ISNULL을 사용하여 빈칸을 0값으로 변경하는 것이 다중행 함수 안에서는 사용할 필요없음
결과값을 낼 때, NULL값을 제외하고 구함
'자격증 공방 > SQLD' 카테고리의 다른 글
제 3-9절 조인(JOIN) (0) | 2018.07.07 |
---|---|
제 3-8절 ORDER BY절 (0) | 2018.07.07 |
제 3-6절 함수 (0) | 2018.07.07 |
제 3-5절 WHERE 절 (0) | 2018.07.07 |
제 3-4절 TCL (TRANSACTION CONTROL LANGUAGE) (0) | 2018.07.07 |