본문 바로가기
데이터베이스/SQLD

[SQLD 도전기] SQL 기본(7) - GROUP BY, HAVING 절

by 썬키 2022. 10. 18.

본문 내용은 모두 필자가 공부하며 직접 정리한 내용입니다.

Kdata 데이터자격검정의 SQL 개발자(SQLD) 가이드를 참고하였습니다.

 

─지난 글 보기─

 

[SQLD 도전기] SQL 기본(6) - 함수(FUNCTION)

본문 내용은 모두 필자가 공부하며 직접 정리한 내용입니다. Kdata 데이터자격검정의 SQL 개발자(SQLD) 가이드를 참고하였습니다. ─지난 글 보기─ [SQLD 도전기] SQL 기본(4) - TCL(Transaction Control Languag

itsmesunky.tistory.com

과목 2 SQL 기본 및 활용

 

제 1장 SQL 기본

제 7절 GROUP BY, HAVING 절

1.집계함수(Aggregate Function)

- 여러 행들의 그룹이 모여서 그룹당 단 하나의 결과를 돌려주는 다중행 함수 중 집계 함수의 특성은 다음과 같다.

ㆍ여러 행들의 그룹이 모여서 그룹당 단 하나의 결과를 돌려주는 함수이다.

ㆍGROUP BY 절은 행들을 소그룹화 한다.

ㆍSELECT 절, HAVING 절, ORDER BY 절에 사용할 수 있다.

출처 : Kdata 데이터자격검정

[예제] SELECT COUNT(*) "전체 행수", COUNT(HEIGHT) "키 건수", 
                MAX(HEIGHT) 최대키, MIN(HEIGHT) 최소키,ROUND(AVG(HEIGHT),2) 평균키  FROM   PLAYER;
                
[실행 결과] 전체 행수  키 건수  최대키  최소키   평균키 
            ------    -----   ----   ----   ----- 
                480       447    196     165   179.31 
            1개의 행이 선택되었다.

 

2. GROUP BY 절

ㆍSQL 문에서 FROM 절과 WHERE 절 뒤에 오며, 데이터들을 작은 그룹으로 분류하여

소그룹에 대한 항목별로 통계 정보를 얻을 때 추가로 사용한다.

SELECT [DISTINCT] 칼럼명 [ALIAS명] 
FROM 테이블명 
[WHERE 조건식] 
[GROUP BY 칼럼(Column)이나 표현식] 
[HAVING 그룹조건식] ;

- GROUP BY 절과 HAVING 절의 특성

ㆍGROUP BY 절을 통해 소그룹별 기준을 정한 후, SELECT 절에 집계 함수를 사용한다.

ㆍ집계 함수의 통계 정보는 NULL 값을 가진 행을 제외하고 수행한다.

GROUP BY 절에서는 SELECT 절과는 달리 ALIAS 명을 사용할 수 없다.

집계 함수는 WHERE 절에는 올 수 없다.

ㆍWHERE 절은 전체 데이터를 GROUP으로 나누기 전에 행들을 미리 제거시킨다.

ㆍHAVING 절은 GROUP BY 절의 기준 항목이나 소그룹의 집계 함수를 이용한 조건을 표시할 수 있다.

ㆍGROUP BY 절에 의한 소그룹별로 만들어진 집계 데이터 중, HAVING 절에서 제한 조건을 두어 조건을 만족하는 내용만 출력한다.

HAVING 절은 일반적으로 GROUP BY 절 뒤에 위치한다.

 

3. HAVING 절

ㆍSELECT 절에 사용되지 않은 칼럼이나 집계 함수가 아니더라도

GROUP BY 절의 기준 항목이나 소그룹의 집계 함수를 이용한 조건을 표시할 수 있다.

 

[예제] HAVING 조건절에는 GROUP BY 절에서 정의한 소그룹의 집계 함수를 이용한 조건을 표시할 수 있으므로,

HAVING 절을 이용해 평균키가 180 센티미터 이상인 정보만 표시한다.

[예제] 
SELECT POSITION 포지션, ROUND(AVG(HEIGHT),2) 평균키 
FROM PLAYER 
GROUP BY POSITION 
HAVING AVG(HEIGHT) >= 180; 

[예제] 
포지션         평균키 
------      ------ 
GK           186.26 
DF           180.21 
2개의 행이 선택되었다.

 

 

다음에는 조인(JOIN)에 관한 내용을 정리하여 포스팅하겠습니다.

댓글