array_agg()

将输入值收集到数组中的函数

array_agg() 是一个系统函数,它将输入值收集到一个数组中。

array_agg()PostgreSQL 8.4 中添加。

用法

array_agg ( anynonarray ) → anyarray
array_agg ( anyarray ) → anyarray

更改历史记录

示例

一个简单的人为示例,将多个行聚合到一个连接值的单个数组中

postgres=#  SELECT array_agg(x || ' / ' || y)
              FROM (values ('foo', 'bar'),
                           ('bar', 'baz')
                   ) _(x, y);
       array_agg
-----------------------
 {"foo / bar","bar / baz"}
(1 row)

另一个人为示例,将来自多行的值聚合到集中

postgres=# SELECT i, array_agg(x || ' / ' || y)
                        FROM (values (1, 'foo', 'bar'),
                                     (2, 'boo', 'hoo'),
                                     (2, 'bar', 'baz')
                             ) _(i, x,y)
                    GROUP BY i;
 i |         array_agg         
---+---------------------------
 1 | {"foo / bar"}
 2 | {"boo / hoo","bar / baz"}
(2 rows)

使用ORDER BY(推荐)来控制生成数组填充的顺序

postgres=# SELECT i, array_agg(x || ' / ' || y ORDER BY x,y)
                        FROM (values (1, 'foo', 'bar'),
                                     (2, 'zoo', 'yum'),
                                     (2, 'boo', 'hoo'),
                                     (2, 'bar', 'baz')
                             ) _(i, x,y)
                    GROUP BY i;
 i |               array_agg               
---+---------------------------------------
 1 | {"foo / bar"}
 2 | {"bar / baz","boo / hoo","zoo / yum"}
(2 rows)

分类

数组系统函数

另请参阅

string_agg()

反馈

提交关于"array_agg()" 的任何评论、建议或更正 此处