안녕하세요
having절을 단독으로 사용한 쿼리가 있어서 질문 드립니다.
with t1 as ( select 1 c1, 'a' c2 from seqtbl union all
select 2 c1, 'b' c2 from seqtbl union all
select 3 c1, 'c' c2 from seqtbl union all
select 4 c1, 'd' c2 from seqtbl )
select '결함있음' gap
from t1
having count(*) <> max(c1);
위의 내용은 제가 테스트를 위해 만들어서 테스트 해본 데이터 입니다.
도대체, group by절에서 소그룹에 대한 지정 없이 사용 하였을 경우
having은 어떤 조건이 되는건가요
GROUP BY 가 없으면 전체행에대한 COUNT 값과 MAX값이 나오겠지요. -- 완전 같지는 않지만 이해를 돕기이해서 with T1 as ( select 1 c1, 'a' c2 from DUAL union all select 2 c1, 'b' c2 from DUAL union all select 3 c1, 'c' c2 from DUAL union all select 4 c1, 'd' c2 from DUAL ) SELECT '결함있음' gap FROM (SELECT count(*) CNT , max(c1) C1 FROM T1 ) WHERE CNT != C1 ;