프로그래밍/Mysql

MYSQL group by 와 having 의미

가카리 2013. 11. 15. 21:05
반응형
having 은 group by 절 에 포함됩니다. group by ... having ... 이딴식으로 쓰이죠.. having 만으로는 쓰여지진 않겟죠...

쉽게 생각하면 group by 절에서 사용하는 where 절 이라고 보시면 됩니다. ( 참 쉽죠잉? 개뿔~ -.-;;;)

where 절에 사용하는 조건들이 group by 보다 먼저 적용되니 group by 로 그룹핑 한후의 시점에서 조건을 걸때 사용합니다.

예를들어...

select
  이름, count( 이름 ) as 갯수
from 테이블이름
where 지역 = '서울'
  group by 이름
  having count(이름) > 1;

위는 지역이 서울인 사람들 에서 이름으로 그룹핑해서 이름과 레코드수를 표시해주는데 having 절이 없으면 모든 레코드를 표시해주겟죠... 위의 예는 중복된 사람을 찾기 위함인데 count(이름) 이 1 이면 중복이 아니겟죠? 그러면 count(이름) 이 1보다 큰사람만 보기 위해서 having 으로 조건을 줍니다.

그럼 count(이름) 을 where 절에 넣으면 되지 않겟냐?? ... 위에서도 언급은 했지만 where 절이 그룹핑 이전의 시점에 적용되기때문에 집계함수 ( count, sum, avg 같은것들.. 통계함수 라고도 함..) 를 사용할수 없다는것이죠...그래서 having 에사용하는데 having 에는 집계함수만 사용할수 있습니다

 

 

출처 : 네이버 지식인  http://kin.naver.com/qna/detail.nhn?d1id=1&dirId=10205&docId=169113467&qb=bXlzcWwgZ3JvdXAgYnk=&enc=utf8&section=kin&rank=2&search_sort=0&spq=0&pid=RohLK35Y7vRssuyHG68ssssssss-090939&sid=UoYNM3JvLDUAACy52uo

 
반응형