728x90
반응형
GROUP BY 절 특징
- GROUP BY 절을 통해 소그룹별 기준을 정한 후, SELECT절에 집계함수를 사용.
- 집계함수의 통계정보는 NULL 값을 가진 행을 제외하고 수행한다.
- GROUP BY 절에서는 ALIAS 명을 사용할 수 없다.
- 집계함수는 WHERE 절에 올 수 없다.
- 집계함수를 사용할 수 있는 GROUP BY 절보다 WHERE 절이 먼저 수행된다.
- WHERE 절은 전체 데이터를 GROUP으로 나누기 전에 행들을 미리 제거시킨다.
- HAVING 절은 GROUP BY 절의 기준 항목이나 소그룹의 집계 함수를 이용한 조건을 표시 할 수있다.
- GROUP BY 절에 의한 소그룹별로 만들어진 집계 데이터 중, HAVING 절에서 제한 조건을 두어 조건을 만족하는 내용만 출력.
HAVING 절 특징
- HAVING 절은 WHERE 절과 비슷하지만 그룹을 나타내는 결과 집합의 행에 조건이 적용된다는 점에서 차이가 있다
- HAVING 절과 GROUP 절의 순서를 바꾸어서 수행하더라도 문법 에러는 없다. 하지만 논리적으로 순서를 지키는 것을 권고
- HAVING 절은 SELECT 절에서 사용되지 않은 칼럼이나 집계함수가 아니더라도 소그룹 집계함수를 이용한 조건을 표시을 가능
데이터의 효율적인 자원 활용 (WHERE 절과 HAVING 절의 관계)
- GROUP BY 연산 전 WHERE 절에서 조건을 적용하여 필요한 데이터만 추출하여 GROUP BY 연산하는 방법
- GROUP BY 연산 후 HAVING 절에서 필요한 데이터만 필터링하는 방법
- 위의 두 가지 방법 중 WHERE 절에서 조건절을 적용하여 GROUP BY의 계산 대상을 줄이는 것이 효율적인 자원 사용이다
SELECT 문장 실행 순서
- 발췌대상 테이블을 참조한다 (FROM)
- 발췌대상 데이터가 아닌 것은 제거한다. (WHERE)
- 행들을 소그룹화 한다 (GROUP BY)
- 그룹핑된 값의 조건에 맞는 것만을 출력한다 (HAVING)
- 데이터 값을 출력/계산한다 (SELECT)
- 데이터를 정렬한다 (ORDER BY)
728x90
반응형
'IT_Web > Oracle' 카테고리의 다른 글
Oracle GROUP BY & HAVING 절 활용 문제 (0) | 2020.02.26 |
---|---|
Oracle 서브쿼리(Subquery) 의 개념 (0) | 2020.02.26 |
Oracle 집계함수 문법 (0) | 2020.02.26 |
Oracle 공집합에대한 NVL 함수 사용법 (0) | 2020.02.25 |
Oracle 조건 & Null함수 문법 (0) | 2020.02.25 |