Мой вопрос относится, в частности, к базе данных Northwind, поэтому я не привожу воспроизводимый пример/набор данных.
Я хотел бы выбрать все продукты, чья цена за единицу больше средней цены за единицу для каждой категории, за исключением одной категории, к которой принадлежит данный продукт. Я пробовал два разных подхода, ни один из которых пока не дал желаемых результатов.
Этот возвращает агрегированный набор данных, но я не знаю, как (полагаю, используя?) сравнить каждую UnitPrice со средней ценой за единицу для всех категорий, кроме той, к которой принадлежит данный продукт.
select
p.ProductName,
UnitPrice, t.mean, t.CategoryID from Products as p
inner join
(select avg(UnitPrice) as mean, CategoryID from Products
group by CategoryID) as t
on p.CategoryID = t.CategoryID
Здесь я смог сравнить UnitPrice с суммарным средним значением всех категорий, не исключая той, к которой относится данный Товар.
SELECT x.ProductName, AVG(x.UnitPrice) AS average
FROM Products x
GROUP BY x.CategoryID, x.ProductName
Having AVG(x.UnitPrice)>
(select AVG(UnitPrice) from Products)
Желаемые результаты должны выглядеть так
Спасибо.