PostgreSQL – ARRAY_AGG()函数
PostgreSQL ARRAY_AGG()函数是一个聚合函数,它接受一组值并返回一个数组,其中输入集中的每个值都分配给数组的一个元素。
Syntax: ARRAY_AGG(expression [ORDER BY [sort_expression {ASC | DESC}], [...])
ORDER BY 条款是自愿条款。它指定在集合中处理的行的顺序,从而建立结果数组中元素的顺序。它通常与 GROUP BY 子句一起使用。
现在让我们看一些例子。
示例 1:
我们将使用 dvdrental 示例数据库中的film
、 film_actor
和actor
表进行演示。在本例中,我们将使用 ARRAY_AVG()函数查询每部电影的电影名称列表和演员列表,如下所示:
SELECT
title,
ARRAY_AGG (first_name || ' ' || last_name) actors
FROM
film
INNER JOIN film_actor USING (film_id)
INNER JOIN actor USING (actor_id)
GROUP BY
title
ORDER BY
title;
输出:
示例 2:
在这里,我们将使用 ARRAY_AGG()函数返回电影列表和每部电影的演员列表,使用以下命令按演员的名字排序:
SELECT
title,
ARRAY_AGG (
first_name || ' ' || last_name
ORDER BY
first_name
) actors
FROM
film
INNER JOIN film_actor USING (film_id)
INNER JOIN actor USING (actor_id)
GROUP BY
title
ORDER BY
title;
输出: