1. 집계 함수
집계 함수(Aggregate Function)의 특성
여러 행들의 그룹이 모여서 그룹 당 단 하나의 결과를 돌려 줌
Group By 절은 행들을 소 그룹화.
Select 절, Having 절, Order By 절에 사용할 수 있음
집계 함수명
ALL : default 옵션, 생략 가능, 전체를 의미
DISTINCT : 같은 값을 하나의 데이터로 간주 함
COUNT(*) : Null 값을 포함한 행의 수 반환
COUNT(표현식) : NULL 값을 제외한 행의 수 출력
SUM(표현식) : NULL 값을 제외한 합계
AVG(표현식) : NULL 값을 제외한 평균
MAX(), MIN()...
STDDEV( 표현식) : 표준 편찬
VARIAN() : 표현식의 분산을 출력
예)
SELECT COUNT(*), COUNT(HEIGHT), MAX(HEIGHT), MIN(HEIGHT),
ROUND(AVG(HEIGHT), 2)
FROM PLAYER
2. GROUP BY
정의
데이터들을 작은 그룹으로 분류하여 소그룹에 대한 항목별로 통계 정보를 얻을 때 사용
위치
FROM, WHERE 절 뒤에 옴
특성
GROUP BY를 통해 소그룹별 기준을 정하고, SELECT 절에 집계 함수를 사용
집계 함수는 NULL값을 제외하고 수행 (COUNT(*) 제외)
ALIAS 사용 불가능
집계함수는 WHERE절에 올 수 없음
HAVING 절은 GROUP BY에 대한 조건 절
GROUP BY에서 만들어진 집계 데이터 중 HAVING 절을 만족하는 데이터만 사용
HAVING절은 GROUP BY뒤에 위치
GROUP BY절에서 그룹단위 표시가 있어야만 그룹단위 컬럼과 집계 함수 사용 가능
예제)
SELECT POSITION, AVG(HEIGHT)
FROM PALYER
GROUP BY POSITION
3. HAVING 절
정의
GROUP BY 절을 위한 조건 정의 절 ( 집계 함수 등을 사용하여 가능)
특징
GROUP BY 데이터 중 일부만 필요한 경우
1) WHERE 절을 이용해 필요 데이터 추출 후 GROUP BY 연산하는 방법
2) GROUP BY 연산 후 HAVING 절을 통해서 추출하는 방법이 존제
하지만 WHERE 절을 통해 데이터를 추출하는 방법이 일반적으로 효율성이 더 높음WHERE 변경 : 최종 데이터의 변화 있음
HAVING : 최종 데이터의 변화는 없으나 출력 row수엔 변화가 있음
사용
SELECT POSITION, AVG(HEIGHT)
FROM PLAYER
GROUP BY POSITION
HAVING AVG(HEIGHT) >= 180
4. CASE 표현을 활용한 월별 데이터 집계
정의
정규화로 중복을 제거한 데이터를 다시 중복 칼럼으로 볼 수 있도록 만들어주는 유요한 기능
STEP1. 개별 데이터 확인
SELECT ENAME, DEPTNO, DATEPART(MONTH, HIREDATE) 입사월, SAL
FROM EMP
STEP2. 월별 데이터 구분
SELECT ENAME, DEPTNO,
CASE MONTH WHEN 1 THEN SAL END M01,
CASE MONTH WHEN 2 THEN SAL END M02,
…
CASE MONTH WHEN 12 THEN SAL END M12
FROM (SELECT ENAME, DEPTNO, EXTRACT(MONTH FROM HIREDATE)
MONTH, SAL
STEP3. 부서별 데이터 집계
SELECT ENAME, DEPTNO,
AVG(CASE MONTH WHEN 1 THEN SAL END) M1,
AVG(CASE MONTH WHEN 2 THEN SAL END) M02,
…
AVG(CASE MONTH WHEN 12 THEN SAL END) M12
FROM (SELECT ENAME, DEPTNO, EXTRACT(MONTH FROM HIREDATE)
MONTH, SAL
GROUP BY DEPTNO
5. 집계함수와 데이터 NULL 처리
A테이블에 100만건이 있다고 가정하에 SUM(NVL(A.SCORE, 0)) 과 NVL(SUM(A.SCORE), 0) 의 차이는 전자의 경우 100만건에 대해서 NVL을 수행, 후자는 마지막 결과에 대해서 한 번만 NVL을 수행한다.
'자격증 > SQLD' 카테고리의 다른 글
JOIN (0) | 2016.09.09 |
---|---|
ORDER BY 절 (0) | 2016.09.09 |
where 절 (0) | 2016.09.09 |
TCL (Transaction Control Language) (0) | 2016.09.09 |
DML (Data Manipulation Language, 데이터 조작 언어) (0) | 2016.09.09 |