having 절의 사용은 언제?

Posted 2008. 4. 14. 16:32
이제까지 group by 는 count(*), sum(a.xxx) 과 같은 그룹함수를 사용할때 사용한다.
그런데 이들 count, sum의 결과를 where 절 조건절에 넣고 가져오려 할때는
sub query를 이용했다.
having을 거의 사용하지 않았었기에....

그런데 having에 대해서 찾아보니 굳지 서브쿼리를 사용하지 않아도
where 절에 들어가지 못하는 그룹함수를 이용한 조건이 사용된다는 점을 알고 테스트해보니...

비용(쿼리가 실행되는 속도..)도 비슷하고.. 쿼리도 깔끔하게 나와 앞으로 자주 사용해야겠다는 생각...

기존 : select a.count, a.idx
         from ( select count(*) as count, idx
                  from board
                  group by idx)  a
         where a.count > 10
         order by a.count desc ;

변경후 : select count(*) as count, idx
            from board
            group by idx
            having count(*) > 10
            order by count(*)  desc;