1. HAVING 사용이유
SELECT 학생ID, ROUND(AVG(성적), 1) AS 평균성적
FROM 성적표
WHERE AVG(성적) <= 75
GROUP BY 학생ID;
2. HAVING 주의사항
SELECT 부서ID, SUM(연봉)
FROM 직원
GROUP BY 부서ID
HAVING 부서ID IN ('D001', 'D002') ;
SELECT 부서ID, SUM(연봉)
FROM 직원
GROUP BY 부서ID
HAVING 연봉 >= 6000;
--SUM(연봉)으로 HAVING에 입력해야함.
SELECT 부서ID, SUM(연봉)
FROM 직원
GROUP BY 부서ID
HAVING SUM(연봉) >= 13000;
SELECT 부서ID, SUM(연봉) AS 연봉합계
FROM 직원
GROUP BY 부서ID
HAVING 연봉합계 >= 6000;
--연봉합계라는 별명을 입력하면 에러!
예제)
--문제1) 수강생정보 테이블에서 소속반 별 인원수가 3명이상인 튜플(행)만 출력해주세요.
SELECT * FROM 수강생정보;
SELECT 소속반, COUNT(학생ID) AS 인원수
FROM 수강생정보
GROUP BY 소속반
HAVING COUNT(학생ID) >= 3;
--문제2) 직원 테이블에서 부서별 최고연봉이 7500인 튜플(행)만 출력해주세요.
SELECT * FROM 직원;
SELECT 부서ID, MAX(연봉) AS 최고연봉
FROM 직원
GROUP BY 부서ID
HAVING MAX(연봉) = 7500;
--문제3) 성적표 테이블에서 학생별 평균성적을 구하되,
--평균값이 NULL이 아닌 값만 출력해주세요.
--(힌트 : HAVING 은 WHERE 절과 똑같이 NULL조건 사용가능)
SELECT * FROM 성적표;
SELECT 학생ID, ROUND(AVG(성적), 1) AS 평균성적
FROM 성적표
GROUP BY 학생ID
HAVING AVG(성적) IS NOT NULL;
'Computer Engineering > DB_Oracle' 카테고리의 다른 글
DML문법 (0) | 2023.03.06 |
---|---|
ORDER BY (0) | 2023.03.03 |
GROUP BY (0) | 2023.03.03 |
복습용문제_230303 (0) | 2023.03.03 |
ANSI문법 (0) | 2023.03.02 |
댓글