Search code examples
sqlpostgresql-9.1

Sorting in array_agg function


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?


Solution

  • 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,