在 array_agg 函数中排序

Ole*_*ndr 1 sql postgresql-9.1

我有一个查询如下所示

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

FROM league 
GROUP BY league.country
Run Code Online (Sandbox Code Playgroud)

如何在 array_agg 函数中按 League.name::varchar 排序?

Cra*_*ger 10

聚合接受一个ORDER BY. 所以你可以写:

array_agg(thecol ORDER BY someothercol)
Run Code Online (Sandbox Code Playgroud)

例如

array_agg(
  DISTINCT 
  row(league.id, league.name::varchar) 
  ORDER BY league.name
) AS league_names, 
Run Code Online (Sandbox Code Playgroud)