반응형
GROUP BY 절
- GROUP BY 절은 SQL 문에서 FROM 절과 WHERE 절 뒤에 오며 GROUP BY 절은 행들을 소그룹화 한다.
- 데이터들을 작은 그룹으로 분류하여 소그룹에 대한 항목별로 통계 정보를 얻을 때 추가로 사용된다
- GROUP BY 절과 HAVING 절은 다음과 같은 특성을 가진다.
- GROUP BY 절을 통해 소그룹별 기준을 정한 후, SELECT 절에 집계 함 수를 사용한다.
- GROUP BY GROUP BY 절에서는 SELECT 절과는 달리 칼럼 ALIAS 명을 사용할 수 없다.
- WHERE 절은 전체 데이터를 GROUP으로 나누기 전에 행들을 미리 제 거시킨다.
- GROUP BY 절과 HAVING 절의 순서를 바꾸더라도 문법 에러가 없고 결과물도 동일한 결과를 출력한다. 그렇지만, 논리적으로 GROUP BY 절 149 결과물도 동일한 결과를 출력한다. 그렇지만, 논리적으로 GROUP BY 절 과 HAVING 절의 순서를 지키는 것을 권고한다
GROUP BY 절
- GROUP BY 절과 HAVING 절은 다음과 같은 특성을 가진다.
- 집계 함수의 통계 정보는 NULL 값을 가진 행을 제외하고 수행한다.
- HAVING 절은 GROUP BY 절의 기준 항목이나 소그룹의 집계 함수를 이용한 조건을 표시할 수 있다.
- 집계 함수는 WHERE 절에는 올 수 없다.
- GROUP BY 절에 의한 소그룹별로 만들어진 집계 데이터 중, HAVING 절에서 제한 조건을 두어 조건을 만족하는 내용만 출력한다.
- 일부 데이터베이스의 과거 버전에서는 데이터베이스가 GROUP BY 절 에 명시된 칼럼(Column)의 순서대로 오름차순 정렬을 자동으로 실시하 는 경우가 있었으나, 지금은 정렬을 위해서는 뒤에서 언급할 ORDER BY 절을 명시해야 정렬이 수행된다 .
GROUP BY 절 예제
- 포지션별 최대키, 최소키, 평균키를 출력한다. (포지션별이란 소그 룹 조건을 제시하였기 때문에 GROUP BY 절을 사용한다)
SELECT POSITION 포지션, COUNT(*) 인원수, COUNT(HEIGHT) 키대상,
MAX(HEIGHT) MAX(HEIGHT) 최대키, MIN(HEIGHT) MIN(HEIGHT) 최소키, ROUND(AVG(HEIGHT) 2) ROUND(AVG(HEIGHT),2) 평균키
FROM PLAYER
GROUP BY POSITION;
- GROUP BY 절에서 그룹 단위를 표시해 주어야 SELECT 절에서 그룹 단위 의 칼럼과 집계 함수를 사용할 수 있다.
- 칼럼에 대한 ALIAS는 SELECT 절에서 정의하고 ORDER BY 절에서는 재활 용할 수 있지만, GROUP BY 절에서는 ALIAS 명을 사용할 수 없다.
HAVING 절
- WHERE 절에서는 집계함수 사용할 수 없다.
- HAVING 절은 집계함수를 가지고 조건비교를 할 때 사용된다.
- HAVING절은 GROUP BY절과 함께 사용된다.
HAVING 절 예제
- HAVING 절은 WHERE 절과 비슷하지만 GROUP BY절에 의해 만들어진 소그룹에 대한 조건이 적용된다는 점에서 차이가 있다.
- HAVING 조건절에는 GROUP BY 절에서 정의한 소그룹의 집계 함수를 이용 한 조건을 표시할 수 있으므로, HAVING 절을 이용해 평균키가 180 센티미터 이상 인 정보만 표시한다.
SELECT POSITION 포지션, ROUND(AVG(HEIGHT),2) 평균키
FROM PLAYER FROM PLAYER
GROUP BY POSITION
HAVING AVG(HEIGHT) >= 180;
포지션 평균키
GK 186.26
DF 180.21
153
2개의 행이 선택되었다.
집계함수
- SELECT, HAVING, ORDERBY 절에 사용할 수 있다.
- 여러 행들의 그룹이 모여 그룹당 단 하나의 결과를 돌려주는 함수
- 테이블 전체 집계를 위하여 GROUP BY 절 없이도 함수 사용이 가능 하다.
출처: 한국데이터베이스 진흥원
반응형
'DB' 카테고리의 다른 글
[SQL] Oracle Developer 테이블 여러개 열기 (0) | 2023.03.24 |
---|---|
[SQL] 조건문 DECODE (0) | 2023.03.23 |
[SQL] COUNT(카운트) (0) | 2023.03.21 |
[sql] WHERE 절 문법 (0) | 2023.03.14 |
[SQL] 오라클 정렬 sort (order by 절 사용법) (0) | 2023.03.14 |