SQL子查询问题

时间:2012-03-25 03:15:38

标签: mysql sql tsql

我的问题是找回以超过平均市场价格出售每件商品的商店;

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);

此查询返回所有商店销售商品>比平均市场价格,但我怎样才能过滤出不适用于每件商品的价格?

1 个答案:

答案 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