Нужно выбрать из таблицы записи с максимальным или минимальным значением по группе?
Вместо вложенных подзапросов удобно использовать оконные функции.
Пример: найти для каждого пользователя его последний заказ.
WITH ranked AS (
SELECT
user_id,
order_id,
order_date,
ROW_NUMBER() OVER (PARTITION BY user_id ORDER BY order_date DESC) AS rn
FROM orders
)
SELECT user_id, order_id, order_date
FROM ranked
WHERE rn = 1;
📌 Как это работает:
PARTITION BY user_id делит данные по пользователям
ORDER BY order_date DESC сортирует заказы от нового к старому
ROW_NUMBER() присваивает каждой записи номер в рамках группы
WHERE rn = 1 берёт только последний заказ для каждого пользователя
💡 Такой подход легко адаптируется: можно выбирать первый/последний элемент в группе, топ-N значений или фильтровать дубликаты.
@sqlhub