Назад к вопросам
Middle
3
Что такое DISTINCT ON в PostgreSQL?
Компании, где спрашивали
Astra
Ответ от нейросети
sobes.tech AI
DISTINCT ON — это расширение PostgreSQL для выборки уникальных строк по определённым столбцам, при этом можно контролировать, какую именно строку из группы брать. В отличие от стандартного DISTINCT, который возвращает уникальные комбинации всех выбранных столбцов, DISTINCT ON позволяет выбрать первую строку для каждой группы по указанным столбцам, учитывая порядок сортировки.
Пример:
SELECT DISTINCT ON (user_id) user_id, order_date, amount
FROM orders
ORDER BY user_id, order_date DESC;
Этот запрос вернёт по одной записи для каждого user_id — ту, у которой самая свежая дата заказа (order_date DESC).
Важно: DISTINCT ON требует обязательного указания ORDER BY, где первые поля должны совпадать с полями в DISTINCT ON.