최보름달
[SQL] GROUP BY, HAVING 본문
GROUP BY 절 특징
- FROM절과 WHERE절 뒤에 오며, 데이터들을 작은 그룹으로 분류하여 소그룹에 대한 항목별 통계 정보를 얻을때 사용한다.
- GROUP BY로 소그룹을 정한 뒤, SELECT절에 집계 함수를 사용한다.
- NULL 값을 가진 행을 제외하고 수행한다.
- GROUP BY절에서는 ALIAS명을 사용할 수 없다.
- WHERE절 수행 후에 GROUP BY 절이 수행된다.
-- 포지션 별 평균키 구하기
-- 이렇게 하면 에러난다.
SELECT POSITION, AVG(HEIGHT)
FROM PLAYER ;
-- 이렇게 해도 에러난다. (ALIAS 사용 불가)
SELECT POSITION 포지션, AVG(HEIGHT)
FROM PLAYER
GROUP BY POSITION 포지션;
-- 이렇게 조회해야 한다.
SELECT POSITION, AVG(HEIGHT)
FROM PLAYER
GROUP BY POSITION ;
HAVING
- GROUP BY절에 의한 집계 데이터 중, HAVING절에서 제한 조건을 두어 조건을 만족하는 내용만 출력할 수 있다. (GROUP BY의 WHERE절 같은 느낌?)
- HAVING은 GROUP BY 뒤에 온다. (HAVING이 앞에와도 동일한 결과를 출력하지만, 논리적 순서를 지킬것을 권고한다. )
- WHERE절은 대상 데이터 개수를 변경하지만, HAVING은 데이터 변경 없이 출력되는 레코드 개수만 변경시킬 수 있다.
-- 포지션별 평균키를 구하되, 키가 180 이상인 정보만 표시하라.
SELECT POSITION, ROUND(AVG(HEIGHT),2) 평균키
FROM PLAYER
GROUP BY POSITION
HAVING AVG(HEIGHT) >= 180 ;
kdata 한국데이터진흥원에서 출간한 SQL 전문가 가이드 2013 Edition을 요약했습니다.
'문송한 회사생활 > SQL 공부' 카테고리의 다른 글
[SQL] SELECT 문장 실행 순서 (0) | 2020.08.14 |
---|---|
[SQL] ORDER BY (0) | 2020.08.14 |
[SQL] 집계함수 Aggregate Function (0) | 2020.08.12 |
[SQL] NULL 관련 함수 (NVL, ISNULL, NULLIF, COALESCE) (0) | 2020.08.12 |
[SQL] CASE 함수 (0) | 2020.08.10 |