Task Livecoding SQL Max Price by Category

16. Товары с максимальной ценой в каждой категории товаров #

Условие задачи:
📊 Составить SQL-запрос, который выводит наименования товаров с максимальной ценой в каждой категории.

📌 Таблица Prices (данные о товарах):

  • Name – название товара
  • Category – категория товара
  • Price – цена товара

🚀 Требуется вернуть:

  • Category
  • Name (товар с максимальной ценой в категории)
  • Price (максимальная цена в категории)
Дана таблица Prices в БД.
Name        Category             Price
--------------------------------------
Апельсин    Фрукты               50
Мандарин    Фрукты               45
Яблоко      Фрукты               30
Огурец      Овощи                35
Томат       Овощи                40
Картофель   Овощи                25
Молоко      Молочные продукты    30
Творог      Молочные продукты    40
Спойлеры к решению
Подсказки
💡 Для каждой категории находим максимальную цену с помощью MAX(Price).
💡 Затем выбираем товары, у которых Price равно найденному максимуму.
💡 Используем JOIN или WHERE с подзапросом.
Решение
SELECT p1.Category, p1.Name, p1.Price
FROM Prices p1
WHERE p1.Price = (
    SELECT MAX(p2.Price) 
    FROM Prices p2 
    WHERE p1.Category = p2.Category
);

Объяснение решения:

  • Подзапрос SELECT MAX(p2.Price) FROM Prices p2 WHERE p1.Category = p2.Category находит максимальную цену в каждой категории.
  • Основной запрос выбирает товары с этой максимальной ценой.
  • Если в категории несколько товаров с одинаковой максимальной ценой, они все попадут в результат.

🔥 Теперь запрос вернет товары с самой высокой ценой в каждой категории! 🚀