반응형
그룹핑한 데이터에서 조건을 걸 수 없다.
WHRER보다 GROUP BY가 먼저 실행되기 때문이다.
이때 HAVING을 이용한다.
WHERE이 실행되는 순서때문에 나온 것이다.
순서가 FROM -> WHERE -> GROUP BY -> HAVING -> SELECT -> ORDER BY이기 때문!
오라클 쿼리 실행 순서
1. FROM : SQL 테이블 최우선 확인
2. WHERE : 테이블에서 주어진 조건에 맞는 레코드 추출
3. GROUP BY : 공통적인 데이터끼리 그룹 생성
4. HAVING : 주어진 조건에 맞는 그룹 추출
5. SELECT : 최종적으로 추출된 프로젝션 조회
6. ORDER BY : 추출된 데이터 정렬
-- having은 group by되고 난 뒤에 조건절
SELECT job, max(sal)
FROM emp
GROUP BY job
HAVING max(sal) >= 2500;
사실 HAVING은 많이 사용하지 않고
인라인뷰로 해결한다.
SELECT *
FROM (
SELECT job, max(sal) money
FROM emp
GROUP BY job
)
WHERE money > 2500;
[출처]
https://cafe.naver.com/metacoding
메타 코딩 유튜브
https://www.youtube.com/c/%EB%A9%94%ED%83%80%EC%BD%94%EB%94%A9
반응형