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

+ Recent posts