2012-03-25 5 views
0

제 질문은 평균 시장 가격보다 더 많이 각 항목을 판매하는 상점을 검색하는 것입니다.SQL 하위 쿼리 문제

SELECT SHOP_NAME, Trade_Name 
FROM SELL_ITEM f 
WHERE PRICE > 
    (SELECT 
    AVG(PRICE) 
    FROM SELL_ITEM s 
    WHERE f.Trade_Name = s.Trade_Name 
    GROUP BY TRADE_NAME); 

이 쿼리는 나에게 평균 시장 가격보다 제품을 판매하는 모든 가게> 반환,하지만 어떻게 그럴 각 항목들을 필터링 할 수 있습니다?

+0

가 ...이 MySQL은, MSSQL, 오라클인가 (뉘앙스를 처음 놓친) ... 편집? – McGarnagle

+0

MySQL을 사용하고 있습니다 – user236501

+0

테스트 데이터와 예상 결과를 포함해야합니다 –

답변

1

SELECT shop_name FROM 
(
    SELECT shop_name, MIN(case when f.price > a.avg_price then 1 else 0 end) AS is_always_higher_than_avg 
    FROM SELL_ITEM f 
    INNER JOIN 
    (
     SELECT avg(price) AS avg_price, trade_name 
     FROM sell_item 
     GROUP BY trade_name 
    ) a 
    ON f.trade_name = a.trade_name 
    WHERE f.price > a.avg_price 
    GROUP BY shop_name 
) b 
WHERE is_always_higher_than_avg = 1 
+0

MSSQL에 대한 예제를 제공 할 수 있습니까? – user236501

+0

당신의 마음을 확인하십시오 - 당신은 이것이 MySql이라고 말 했나요! –

+0

귀하의 질의는 실제로 평균보다 높은 몇 가지 품목 가격을 가지고 있지만 각 품목이 아닌 shop_name을 반환합니다. – user236501