Suggestion. Optional local ORDER BY clause for DISTINCT ON

Поиск
Список
Период
Сортировка
От Stefan Stefanov
Тема Suggestion. Optional local ORDER BY clause for DISTINCT ON
Дата
Msg-id 2061495418.2763075.1696958490409@nm33.abv.bg
обсуждение исходный текст
Ответы Re: Suggestion. Optional local ORDER BY clause for DISTINCT ON  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-hackers
Gents, I have a suggestion for DISTINCT ON clause syntax.

DISTINCT ON (expression(s) [ORDER BY expression(s)])
Determines the precedence within each DISTINCT ON group (i.e. the ‘first’ row to be picked)

Motivation
• Using the query-wide ORDER BY clause to determine which record to pick mixes two unrelated concerns, ‘first’ row selection and result-set ordering. This may be confusing;
• The DISTINCT ON expression(s) must match the leftmost ORDER BY expression(s). This may cause inconvenience and require nesting as a sub-query to order the result-set.

Pros
• Backward compatibility. If the local ORDER BY clause is missing then the current rules shall apply;
• Familiar and consistent syntax and semantics, the same as in *_agg functions;
• Clear distinction of first row selection and result-set ordering;
• Good readability;
• The DISTINCT ON expression(s) do not have to match the leftmost ORDER BY expression(s).

Cons
• Possible extra verbosity

Best regards,
Stefan

В списке pgsql-hackers по дате отправления:

Предыдущее
От: Tom Lane
Дата:
Сообщение: Re: Retire has_multiple_baserels()
Следующее
От: Tom Lane
Дата:
Сообщение: Re: Check each of base restriction clauses for constant-FALSE-or-NULL