On Wed, Aug 4, 2010 at 11:29 AM, Tom Lane <t...@sss.pgh.pa.us> wrote: > Robert Haas <robertmh...@gmail.com> writes: >> Oh, yeah. I guess you need this: > >> select thing, string_agg(stuff, ',' order by stuff) from agg_test >> group by thing; > >> Rather than this: > >> select thing, string_agg(stuff order by stuff, ',') from agg_test >> group by thing; > >> It's all kinds of not obvious to me what the second one is supposed to >> mean, but I remember this was discussed before. Perhaps we need a >> <note> somewhere about multi-argument aggregates. > > Done: > > + <para> > + When dealing with multiple-argument aggregate functions, note that the > + <literal>ORDER BY</> clause goes after all the aggregate arguments. > + For example, this: > + <programlisting> > + SELECT string_agg(a, ',' ORDER BY a) FROM table; > + </programlisting> > + not this: > + <programlisting> > + SELECT string_agg(a ORDER BY a, ',') FROM table; -- not what you want > + </programlisting> > + The latter syntax will be accepted, but <literal>','</> will be > + treated as a (useless) sort key. > + </para>
Oh, right, that's what it's supposed to mean. Thanks for adding this. I suppose this confusion is only possible because string_agg has both a one-argument and a two-argument form. -- Robert Haas EnterpriseDB: http://www.enterprisedb.com The Enterprise Postgres Company -- Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-bugs