HAVING
SELECT ...
FROM 테이블 ...
WHERE 조건 ...
GROUP BY 컬럼
HAVING [그룹조건] ...
ORDER BY 정렬_대상 ... ;
- GROUP BY로 그룹화 된 조건을 기술한다.
- 일반 조건은 WHERE 절에 기술하고, 그룹 함수가 포함된 조건은 HAVING 절에 기술한다.
실습
1. 화학과를 제외하고 학과별로 학생들의 평점 평균을 검색한다.
SELECT major, TO_CHAR(avg(avr), '0.00') 평점_평균
FROM student
GROUP BY major
HAVING major != '화학';
2. 화학과를 제외한 각 학과별 평균 평점 중에 평점이 2.0 이상인 정보를 검색한다.
SELECT major, TO_CHAR(avg(avr), '0.00') 평점_평균
FROM student
GROUP BY major
HAVING major != '화학' AND avg(avr) >= 2.0;
3. 기말고사 평균이 60점 이상인 학생의 정보를 검색한다.(학번과 기말고사 평균)
SELECT st.sno, sname, TO_CHAR(avg(result), '999.99') 기말고사_평균
FROM student st, score sc
WHERE st.sno = sc.sno
GROUP BY st.sno, sname
HAVING avg(result) >= 60;
4. 강의 학점수가 3학점 이상인 교수의 정보를 검색한다.(교수번호, 이름과 담당 학점수)
SELECT p.pno, pname, sum(st_num) 담당_학점수
FROM professor p, course c
WHERE p.pno = c.pno
GROUP BY p.pno, pname
HAVING sum(st_num) >= 3;
5. 기말고사 성적이 핵 화학과목보다 우수한 과목의 과목명과 담당 교수명 검색한다.
SELECT cname, pname
FROM professor p, course c, score sc
WHERE p.pno = c.pno AND c.cno = sc.cno
GROUP BY cname, pname
HAVING avg(result) > (SELECT avg(result) FROM course c, score sc
WHERE c.cno = sc.cno AND cname='핵화학');
6. 근무 중인 직원이 4명 이상인 부서를 검색한다.
SELECT d.dno, dname, count(eno) 직원수
FROM emp e, dept d
WHERE e.dno = d.dno
GROUP BY d.dno, dname
HAVING count(eno) >= 4;
7. 업무별 평균 년봉이 2만불 이상인 업무를 검색한다.
SELECT job, TO_CHAR(avg(sal*12+NVL(comm,0)), '$999,999.99') 평균_연봉
FROM emp
GROUP BY job
HAVING avg(sal*12+NVL(comm,0)) >= 20000;
8. 각 학과의 학년별 인원중 인원이 5명 이상인 학년을 검색한다.
SELECT major, syear, count(sno) 인원
FROM student
GROUP BY major, syear
HAVING count(sno) >= 5
ORDER BY major;
9. 인원수가 가장 많은 학과를 검색한다.
SELECT major, count(sno) 인원
FROM student
GROUP BY major
HAVING count(sno) = (SELECT max(count(sno))
FROM student
GROUP BY major);
10. 학생 중 기말고사 성적이 가장 낮은 학생의 정보를 검색한다.
SELECT st.sno, sname, TO_CHAR(avg(result), '999.99') 성적
FROM student st, score sc
WHERE st.sno = sc.sno
GROUP BY st.sno, sname
HAVING avg(result) = (SELECT MIN(avg(result)) FROM student st, score sc
WHERE st.sno = sc.sno
GROUP BY st.sno, sname);
'SQL' 카테고리의 다른 글
SQL 테이블 생성과 테이블 타입(DDL) (0) | 2024.02.26 |
---|---|
SQL insert, update, delete (0) | 2024.02.02 |
SQL select - 실습15 (0) | 2024.02.01 |
SQL select - 실습14 (0) | 2024.02.01 |
SQL select - 실습13 (0) | 2024.01.31 |