Как найти товар с самой высокой ценой, для всех поставщиков?

Один и тот же поставщик (Supplier), может поставлять несколько продуктов, цена которых отличается, нужно составить запрос, который выведет ID и имя поставщика, а также товар с самой высокой ценой, для данного поставщика.

SELECT DISTINCT Suppliers.SupplierID, Suppliers.SupplierName, Products.Price
FROM Suppliers, Products
WHERE price=(SELECT MAX(price) FROM Products)
ORDER BY Suppliers.SupplierID ASC

Ответы (1 шт):

Автор решения: dzhukov

Вариант решения для T-SQL (т.к. СУБД не указана)

declare
    @Suppliers table (SupplierID int, SupplierName varchar (100),  Product varchar (100))

declare
    @Products table  (Product varchar (100), Price int)

insert into @Suppliers
values
(1, 'Supplier1', 'Product1'),
(1, 'Supplier1', 'Product2'),
(1, 'Supplier1', 'Product3'),
(2, 'Supplier2', 'Product1')

insert into @Products
values
('Product1', 100),
('Product2', 200),
('Product3', 300),
('Product1', 100)


select SupplierID, SupplierName,Product,Price
from 
(
    select SupplierID, SupplierName, p.Product, p.Price , max(p.Price) over (partition by SupplierID) price_max
    from @Suppliers s 
    join @Products p on s.Product=p.Product
    group by SupplierID, SupplierName, p.Product, p.Price

)t
where Price=price_max
→ Ссылка