2011-02-16 4 views
3

제품, 가격 및 가격이있는 테이블이 있습니다. 기사 당 평균 가격이 범위 내에있는 모든 항목을 선택해야합니다. 지금까지 내 쿼리 :이 작업을 수행 할 경우, 그것은 나에게 말한다계산 된 값의 조건이있는 SQL

SELECT productid,AVG(SUM(price)/SUM(amount)) AS avg 
FROM stock WHERE avg>=$from AND avg<=$to GROUP BY productid 

평균은 존재하지 않습니다. 또한 와인 당 합계와 평균이 필요하기 때문에 분명히 그룹화해야합니다.

+0

여기서 무엇을하려고합니까? 'AVG (SUM (가격)/SUM (금액)) ' –

답변

3

HAVING 절에 넣어야합니다. WHERE을 사용하는 집계 결과로 필터링 할 수 없습니다.

MySQL에서는 HAVING에서 열 별칭을 참조 할 수 있습니다. 당신은

SELECT 
     productid, 
     AVG(price/amount) AS avg , 
     /*SUM(price)/SUM(amount) AS avg (<--- Or perhaps this?)*/ 
FROM stock 
GROUP BY productid 
HAVING avg>=$from AND avg<=$to 

을해야 할 수도 있습니다하지만 난 당신이 몇 가지 예제 데이터를 표시 할 수 AVG(SUM(price)/SUM(amount))와 함께 일을하려고 정확히 모르겠어요?

+0

Ahhhh, 예, HAVING과 함께 작동합니다. – lawl0r