From 6a366113e6f9661fa270197807dadde55e69b5ed Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Wed, 4 Aug 2010 22:31:55 +0000 Subject: [PATCH] Forgot to back-patch earlier change to documentation for aggregate ORDER BY clauses. --- doc/src/sgml/syntax.sgml | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/doc/src/sgml/syntax.sgml b/doc/src/sgml/syntax.sgml index bf63425a71..0c1f2068b1 100644 --- a/doc/src/sgml/syntax.sgml +++ b/doc/src/sgml/syntax.sgml @@ -1,4 +1,4 @@ - + SQL Syntax @@ -1568,7 +1568,7 @@ sqrt(2) unspecified order. In many cases this does not matter; for example, min produces the same result no matter what order it receives the inputs in. However, some aggregate functions - (such as array_agg and xmlagg) produce + (such as array_agg and string_agg) produce results that depend on the ordering of the input rows. When using such an aggregate, the optional order_by_clause can be used to specify the desired ordering. The order_by_clause @@ -1576,13 +1576,27 @@ sqrt(2) described in , except that its expressions are always just expressions and cannot be output-column names or numbers. For example: - SELECT array_agg(a ORDER BY b DESC) FROM table; + When dealing with multiple-argument aggregate functions, note that the + ORDER BY clause goes after all the aggregate arguments. + For example, this: + +SELECT string_agg(a, ',' ORDER BY a) FROM table; + + not this: + +SELECT string_agg(a ORDER BY a, ',') FROM table; -- not what you want + + The latter syntax will be accepted, but ',' will be + treated as a (useless) sort key. + + + If DISTINCT is specified in addition to an order_by_clause, then all the ORDER BY expressions must match regular arguments of the aggregate; that is, -- 2.11.0