Проблемы подзапросов SQL - PullRequest
0 голосов
/ 25 марта 2012

Мой вопрос - найти магазин, в котором каждый предмет продается по цене, превышающей среднерыночную;

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 Ответ

1 голос
/ 25 марта 2012

Отредактировано ... (в первый раз пропустил нюанс)

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...