按降序排列聚合串在PostgreSQL的查询(Aggregate strings in descen

2019-07-29 06:33发布

除了这个问题如何将字符串场串在PostgreSQL的组通过“查询?

我怎么能以降序排列的员工?

我使用PostgreSQL 8.4不支持string_agg() 我试着用下面的,但它不支持:

array_to_string(array_agg(employee ORDER BY employee DESC), ',')

我会很感激的任何提示正确的答案。

Answer 1:

在PostgreSQL 9.0或更高版本,你可以订购聚合函数中的元素 :

SELECT company_id, array_agg(employee ORDER BY company_id DESC)::text
FROM   tbl
GROUP  BY 1;

这不适用于PostgreSQL的8.4。 你要预购值进行汇总。 使用子查询或CTE用于此目的(8.4+):

SELECT company_id, array_agg(employee)::text
FROM  (SELECT * FROM tbl ORDER BY company_id, employee  DESC) x
GROUP  BY 1;

我按订单company_id此外,因为要加快聚集。

我也用的只是投放数组“绝招” textarray_agg(employee)::text ),让您无需额外的空格一个基本的,逗号分隔的字符串,是最快的方法。
对于更复杂的格式,使用array_to_string(array_agg(employee), ', ')就像你在你的问题。



文章来源: Aggregate strings in descending order in a PostgreSQL query