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
  • 309
  • 1
  • 4
  • 15
  • 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

11

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
  • 283,586
  • 65
  • 635
  • 730