1

I have a query shown below

SELECT 
  league.country as id, 
  array_agg(DISTINCT row(league.id, league.name::varchar)) AS league_names, 

FROM league 
GROUP BY league.country

How can I sort by league.name::varchar in array_agg function?

Oleksandr
  • 319
  • 1
  • 6
  • 15
  • 1
    Possible duplicate of [PostgreSQL array\_agg order](http://stackoverflow.com/questions/7317475/postgresql-array-agg-order) – Sigfried Mar 14 '16 at 10:14

1 Answers1

13

Aggregates accept an ORDER BY. So you can write:

array_agg(thecol ORDER BY someothercol)

e.g.

array_agg(
  DISTINCT 
  row(league.id, league.name::varchar) 
  ORDER BY league.name
) AS league_names, 
Craig Ringer
  • 307,061
  • 76
  • 688
  • 778