除了问题如何在 PostgreSQL 'group by' 查询中连接字符串字段的字符串?
如何按降序对员工进行排序?
我正在使用不支持string_agg()
. 我尝试使用以下内容,但不受支持:
array_to_string(array_agg(employee ORDER BY employee DESC), ',')
对于正确答案的任何提示,我将不胜感激。
除了问题如何在 PostgreSQL 'group by' 查询中连接字符串字段的字符串?
如何按降序对员工进行排序?
我正在使用不支持string_agg()
. 我尝试使用以下内容,但不受支持:
array_to_string(array_agg(employee ORDER BY employee DESC), ',')
对于正确答案的任何提示,我将不胜感激。
在 PostgreSQL 9.0或更高版本中,您可以在聚合函数中对元素进行排序:
SELECT company_id, string_agg(employee, ', ' ORDER BY company_id DESC)::text
FROM tbl
GROUP BY 1;
PostgreSQL 8.4既不可用string_agg()
也不可用。您必须预先订购要聚合的值。为此使用子选择或CTE (pg 8.4+):ORDER BY
SELECT company_id, array_to_string(array_agg(employee), ', ')
FROM (SELECT * FROM tbl ORDER BY company_id, employee DESC) x
GROUP BY 1;
我company_id
另外订购,因为这应该加快随后的聚合。
不那么优雅,但速度更快。(对于 Postgres 14 仍然如此。)
看: