안녕하세요
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은 어떤 조건이 되는건가요
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | 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 ; |