что мне надо взять минимальную цену по перевозчику и id самой записи, но т.к. его требуется записать в group by, то он ломает группировку и в итоге я вижу все цены, вместо минимальных
SELECT r.id, min(r.price) AS mp, c.name
FROM rates AS r
INNER JOIN carriers AS c ON r.carrier_id = c.id
GROUP BY r.id, r.carrier_id, c.name
сделать еще один запрос на уровень выше, а этот - как подзапрос в FROM, например
Подобные задачи называются "groupwise maximum" (ну или minumum/extremum), погуглите — есть несколько готовых вариантов решения (лучшие — те, которые с LATERAL или DISTINCT ON).
Обсуждают сегодня