Вы, похоже, хотите простой подзапрос - без агрегации во внешнем запросе:
SELECT p.*
FROM products p
WHERE p.prize = (SELECT MAX(p2.prize)
FROM products p2
WHERE p2.manufacturer = p.manufacturer
);
Как уже упоминалось в предыдущем вопросе, вы используете GROUP BY
неправильно.В SELECT
есть неагрегированные столбцы, которых нет в GROUP BY
.
. Вы используете агрегирование во внешнем запросе, поэтому вы получаете только одну строку для каждого производителя.
ВС точки зрения производительности, это часто самый быстрый метод - с правильными показателями.В этом случае правильный индекс на (manufacturer, prize)
.