2012-10-07 3 views
0

나는 다음과 같은 데이터베이스 스키마가 : BuyVehicle.bvvinVehicle.vinBuyVehicle.bvssn에서 외래 키WHERE 절에 MySQL 집계가 있습니까?

Customer(ssn, name, gender, city) 
Vehicle(vin, make, model, year) 
BuyVehicle(bvssn, bvvin, price, year) 

Customer.ssn에서 외래 키입니다. 나는 특정 차량의 평균보다 큰 가격으로 차량을 구입 한 사람들의 이름을 선택하려고 노력하고 있습니다. 나는 WHERE 절에 price > avg_price 조건을 입력하는 것을 시도했다

SELECT AVG(price) as avg_price, v.maker, v.model, v.year FROM BuyVehicle bv, Vehicle v, Customer c WHERE v.vin = bv.BVVIN AND c.ssn = bv.bvssn GROUP BY maker, model, year; 

:

지금까지, 나는 차량의 평균 계산하는 방법을 확인한

SELECT AVG(price) as avg_price, v.maker, v.model, v.year FROM BuyVehicle bv, Vehicle v, Customer c WHERE v.vin = bv.BVVIN AND c.ssn = bv.bvssn AND bv.price > avg_price GROUP BY maker, model, year; 

을하지만 MySQL은 나에게 말한다 avg_price 열이 존재하지 않습니다. 이 문제에 대한 잘못된 접근법을 취하고 있습니까?

답변

4

당신이 가진 사용해야합니다 집계 작업을 할 때

SELECT AVG(price) as avg_price, v.maker, v.model, v.year, bv.price 
FROM BuyVehicle bv, Vehicle v, Customer c WHERE v.vin = bv.BVVIN AND c.ssn = bv.bvssn 
GROUP BY maker, model, year 
having bv.price > avg_price 
+0

원하는 추측하고있어 무엇을 얻을 수있는 평균 하위 쿼리에 대한 어디 할 필요가 의심 : '알 수없는 열'bv.price을 '에서'을 가진 clause'' –

+0

bv.price를'필드를 선택하십시오. AVG (가격)을 avg_price, v.maker, v.model, v.year, bv.price'로 선택하십시오. –

+0

매우 흥미로운 문제입니다. 이 쿼리는 성공하지만 빈 집합을 반환합니다. 그러나 불평등을 미만으로 반올림하면 평균 가격보다 낮은 가격으로 고객이 구매 한 행을 반환합니다. –

0

당신이하여 그룹 후 진행되는 'HAVING'라는 사용해야하는 별도의 조항있다 그러나 당신이 작성하려고하는 쿼리를 나타납니다 사실 그보다 더 복잡합니다.

결과에서보고 싶은 것은 무엇입니까?

난 당신이 내가 다시 내가 얻고

+0

결과에서 차량을 구입 한 사람의 이름을 찾고 있습니다. 해당 차량의 평균 가격보다 큽니다. –

+0

괜찮 으면 평균에 가입 할 것입니다. 붙여 넣기를 복사하기가 너무 어려워요. – user1727088

+0

고객으로부터 c.name을 선택하십시오. 내측에 가입하십시오. buyvehicle as bv.bvssn = c.ssn a.bvvin = bv.bvvin 및 a.price user1727088

관련 문제