В DISTINCT ON выражения должны соответствовать левым выражениям ORDER BY. Следующие поля сортировки определяют, какую строку оставить в каждой группе.
Какое ограничение существует при использовании DISTINCT ON в PostgreSQL с ORDER BY?
В DISTINCT ON выражения должны соответствовать левым выражениям ORDER BY. Следующие поля сортировки определяют, какую строку оставить в каждой группе.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
В DISTINCT ON выражения должны соответствовать левым выражениям ORDER BY. Следующие поля сортировки определяют, какую строку оставить в каждой группе.
Например:
SELECT DISTINCT ON (client_id) client_id, name, updated_at
FROM client_history
ORDER BY client_id, updated_at DESC, id DESC;
Так выбирается последняя версия по клиенту при заданном порядке. Без детерминированной сортировки выбранная строка непредсказуема. Для другого итогового порядка оберните запрос во внешний SELECT с собственным ORDER BY.
Источник: www.postgresql.org.