GROUP BY, HAVING절
2023. 10. 7. 16:33ㆍBOOKS/SQL 전문가 가이드
SQL 전문가 가이드
SQL 전문가 가이드는 SQL 자격검정 대비 수험서로 데이터베이스와 데이터 모델링에 대한 지식을 바탕으로 최적의 성능을 발휘할 수 있도록 SQL을 작성하고 데이터베이스 프로그램이나 응용 소프트웨어의 성능을 최적화하고 데이터베이스 개체의 설계와 구현을 위해 데이터 모델링의 이해, SQL기본 및 활용, SQL 고급 활용 및 튜닝 등의 실무가이드로 구성되어 있다.
- 저자
- 한국데이터산업진흥원
- 출판
- 한국데이터산업진흥원
- 출판일
- 2021.03.15
1. 집계함수
- 여러 행들의 그룹이 모여 그룹당 단 하나의 결과를 돌려주는 함수
- GROUP BY절은 행들을 소그룹화한다.
- SELECT절, HAVING절, ORDER BY절에 사용가능
집계함수 종류
2. GROUP BY절
SELECT [DISTINCT] 칼럼명 [ALIAS명]
FROM 테이블명
[WHERE 조건식]
[GROUP BY 칼럼이나 표현식]
[HAVING 그룹조건식];
- GROUP BY절을 통해 소그룹별 기준을 정한 후 SELECT절에 집계함수 사용
- 집계함수이 통계정보는 NULL값을 가진 행을 제외하고 수행
- GROUP BY절에는 ALIAS명 사용 불가능
- 집계함수는 WHERE절에 올 수 없다.
- WHERE절은 전체 데이터를 GROUP으로 나누기 전에 행들을 미리 제거
- HAVING절은 GROUP BY절의 기준 항목이나 소그룹의 집계함수를 이용한 조건을 표시가능
- GROUP BY절에 의한 소그룹별로 만들어진 집계 데이터 중 HAVING절에서 제한 조건을 두어 조건을 만족하는 내용만 출력
- HAVING절은 일반적으로 GROUP BY절 뒤에 위치
3. HAVING절
- WHERE절은 GROUP BY절보다 먼저 적용되므로 집계함수를 사용할 수 없음 →HAVING절 사용
- WHERE절 조건에 맞는 데이터들이 GROUP BY절에 의해 그룹화된 후 HAVING절 조건에 맞는 데이터만 출력
- GROUP BY절과 HAVING절 위치 바꾸어도 오류X(ORACLE) But GROUP BY절 뒤에 HAVING절이 오는 것을 권고함
- 가능하면 WHERE절에서 GROUP BY계산 대상을 줄이는 것이 효율적
4. CASE 표현을 활용한 월별 데이터 집계
5. 집계함수와 NULL 처리
- 집계함수는 NULL을 제외하고 계산하므로 NULL을 0으로 표현하기 위해 NVL이나 ISNULL함수를 사용하는 것이 불필요
ex) SUM(NVL(SAL,0)) = SUM(SAL)