문송한 회사생활/SQL 공부
[SQL] GROUP BY, HAVING
PieMoon
2020. 8. 13. 23:15
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을 요약했습니다.