SQL> SELECT [DISTINCT/ALL] 컬럼명 or 그룹함수, ...
> FROM 테이블
> WHERE 조건
> GROUP BY Group대상
> HAVING <그룹 함수 포함 조건>
> ORDER BY 정렬대상 [ASC/DESC]
- HAVING : 조건 중에 그룹 함수를 포함하는 조건을 기술한다.
- HAVING절은 GROUP BY절 뒤에 기술한다.
* GROUP BY절에 따른 그룹 함수 결과 값의 변화
만일 평균 급여가 3000 이상인 조건을 검색하는 경우 평균 급여(avg(sal))를 계산한 다음 조건에 맞는 값을 검색하게 되는데, 이때 GROUP BY 절의 내용에 따라 검색된 결과 값이 달라진다. 위는 dno와 job을 GROUP BY절에 사용하는 경우 달라진 결과를 보여준다. 만일 'avg(sal) > 3000' 조건을 검색한다면 일단 'GROUP BY' 절을 먼저 실행하고 그 결과에 따라 조건을 찾아야한다. WHERE절에 기술하는 일반 조건과는 달리 그룹과 관련된 조건은 값에 대한 여러 가지 연산을 수행한 다음 조건을 검색함으로 이와 관련된 문법을 위해 HAVING절이 추가되었다.
예제 1. 부서별 급여 평균이 2천 달러 미만인 부서의 부서번호와 평균 급여를 검색한다.
예제 2. 부서별 평균 급여가 가장 큰 부서의 부서번호를 검색한다
예제 3. HAVING절의 다양한 사용법
실습
실습쿼리
다운로드
다운로드
① 화학과를 제외하고 학생들의 평점 평균을 검색한다.
② 화학과를 제외한 각 학과별 평균 평점 중에 평점이 2.0 이상인 정보를 검색한다.
③ 기말고사 평균이 60점 이상인 학생의 정보를 검색한다.(학번과 기말고사 평균)
④ 강의 학점수가 3학점 이상인 교수의 정보를 검색한다.(교수번호와 담당 학점수)
⑤ 화학과 1학년 학생 중 현재까지 평점이 화학과 1학년 평균 평점이하인 학생
⑥ 일반 화학을 수강하는 학생 중 성적이 가장 낮은 학생의 이름
문제
실습쿼리
다운로드
다운로드
1. 근무 중인 직원이 4명 이상인 부서를 검색한다. (부서번호, 인원)
2. 업무별 평균 년봉이 2만불 이상인 부서를 검색한다. (부서번호, 평균년봉)
3. 각 학과의 학년별 인원중 인원이 6명 이상인 학년을 검색한다.
'정보보호관리자 과정 교육 > Oracle' 카테고리의 다른 글
22강 테이블 생성 (0) | 2010.10.29 |
---|---|
19강 DML 문장의 이해 (0) | 2010.10.26 |
17강 그룹 함수와 통계 정보 (0) | 2010.10.26 |
16강 단일행 함수 - 변환 함수 (0) | 2010.10.26 |
15강 단일 행 함수 - 숫자, 날짜형 함수 (1) | 2010.10.25 |