Какое ограничение существует при использовании DISTINCT ON в PostgreSQL с ORDER BY?

В DISTINCT ON выражения должны соответствовать левым выражениям 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.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее