HAVING

tpids·2024년 6월 11일

DB

목록 보기
15/25

HAVING : 그룹화 상태의 데이터를 핉터링(조건)

  • HAVING 내부에서 집계함수 사용 가능 ( WHERE문에선 x )
  • WHERE문은 GROUP BY 보다 먼저 실행됨
  • HAVING은 GROUP BY의 영향을 받음
-- HAVING
SELECT 학생ID, ROUND(AVG(성적), 1) AS 평균성적
FROM 성적표
GROUP BY 학생ID
HAVING AVG(성적) <= 75;

-- 실습 문제
-- 1. 수강생정보 테이블에서 소속반 별 인원수가 3명이상인 튜플만 출력
SELECT 소속반, COUNT(학생ID) AS 인원수
FROM 수강생정보
GROUP BY 소속반
HAVING COUNT(학생ID) >= 3;

-- 2. 직원 테이블에서 부서별 최고연봉이 7500인 튜플만 출력
SELECT 부서ID, MAX(연봉) AS 최고연봉
FROM 직원
GROUP BY 부서ID
HAVING MAX(연봉) = 7500;

-- 3. 성적표 테이블에서 학생별 평균성적을 구하되, 평균값이 NULL이 아닌 값만 출력 (HAVING은 WHERE 절과 똑같이 NULL 조건 사용 가능)
SELECT 학생ID, ROUND(AVG(성적),1) AS 평균성적 
FROM 성적표
GROUP BY 학생ID
HAVING AVG(성적) IS NOT NULL;
profile
개발자 공부중

0개의 댓글