Выбор максимума из одного поля и значения другого поля по максимуму третьего поля
Коллеги, прошу совета. Есть таблица, например, table
, с тремя полями, например field1, field2, field3
. Надо получить в одном запросе два значения:
- Максимум поля
field1
- Значение поля
field2
в записи, где полеfield3
максимально.
Значения поля field3
уникальны, так что оба ответа однозначны.
Решить эти две задачи двумя запросами не проблема.
1:
SELECT MAX(field1) FROM table;
2:
SELECT field2 FROM table
ORDER BY field3 DESC
LIMIT 1;
или для второй задачи вариант с WHERE
:
SELECT field2 FROM table
WHERE field3 = (SELECT MAX(field3) FROM table);
Но получить оба в одном запросе - не получается. Пишу что-то такое:
WITH max_field3 AS (
SELECT field3 FROM table WHERE field3 = (SELECT MAX(field3) FROM table))
SELECT MAX(field1), max_field3.field3 FROM table;
Пишет missing FROM-clause...
Если пишу так:
WITH max_field3 AS (
SELECT field3 FROM table WHERE field3 = (SELECT MAX(field3) FROM table))
SELECT MAX(field1), max_field3.field3 FROM table, max_field3;
Пишет - нужен GROUP BY
В общем, что-то я не понимаю, прошу совета.