2012-03-25 112 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 2012-03-25 03:23:14

+0

我正在使用MySQL – user236501 2012-03-25 03:27:44

+0

您應該包含測試數據和預期結果 – 2012-03-25 08:35:08

回答

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 2012-03-25 03:30:51

+0

請打定主意 - 您確實說過這是MySql! – 2012-03-25 03:34:18

+0

您的查詢實際上給我返回了shop_name只有幾個項目價格高於平均水平,但不是每個項目 – user236501 2012-03-25 03:34:53