group by / having을 하고싶은데... 0 4 2,709

by 도상훈 [2007.05.23 11:42:06]


select mfr_id, qty, company
from products, orders, customers
where products.mfr_id=orders.mfr and orders.cust=customers.cust_num
group by products.mfr_id having avg(products.price)>200

 

테이블 3개를 조인하고 group by /having 을 하고 싶거든요

 

위에 코드가 문법이 틀린 것 같은데...

 

충족조건이 '3개 테이블 조인'과 '그룹바이와 해빙'을 쓰는 겁니다;;

 

제가 위 코드 한게 어떤 걸 원하는지 아실것 같은데...

 

그리고 group by/ having 은 where 절이랑 같이 안쓰나요???거의 본적이 없는 것

 

같아서요;;

 

맞는 문법좀 가르쳐주시면 감사해요^^

by 웅 [2007.05.23 00:00:00]
select mfr_id, sum(qty), min(company ), avg(products.price)
from products, orders, customers
where orders.mfr = products.mfr_id
and orders.cust = customers.cust_num
group by products.mfr_id
having avg(products.price)>200

by 현 [2007.05.23 00:00:00]
쓰는 순서나 이런건 맞으셨는데,
그룹바이를 하게 되면 그룹핑 하는데 참여하지 않는 컬럼들은 그룹함수를 쓰셔야 합니다.
상식적으로 잘 생각해 보시면 왜 그런지 아실꺼 같구요,
해빙은 select절에서 나온 결과값을 조건으로 주는 것입니다.
즉, 님께서 작성하신 부분에서 잘못된 부분은
select절에 그룹핑에 참여하지 않은 컬럼의 그룹함수(max,min,sum,avg 등) 을 사용하시면 됩니다.
having avg(products.price) 이 구문이 있는 걸로 봐서는 avg그룹함수를 사용하시면 되겠네요..

자세한 사항은 강좌를 참조하세요.

by . [2007.05.23 00:00:00]
select
from
where
group by
having
order by

having절은 grouping한 데이터의 조건절이라 생각하시면 이해하시기 편할거 같네요

by 도상훈 [2007.05.23 00:00:00]
답변 감사합니다^^ 생각해보니 그룹함수를 써야 가능하군요^^ 감사해요^^
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입