📜  PostgreSQL – ARRAY_AGG()函数

📅  最后修改于: 2022-05-13 01:57:16.002000             🧑  作者: Mango

PostgreSQL – ARRAY_AGG()函数

PostgreSQL ARRAY_AGG()函数是一个聚合函数,它接受一组值并返回一个数组,其中输入集中的每个值都分配给数组的一个元素。

Syntax: ARRAY_AGG(expression [ORDER BY [sort_expression {ASC | DESC}], [...])

ORDER BY 条款是自愿条款。它指定在集合中处理的行的顺序,从而建立结果数组中元素的顺序。它通常与 GROUP BY 子句一起使用。
现在让我们看一些例子。
示例 1:
我们将使用 dvdrental 示例数据库中的filmfilm_actoractor表进行演示。在本例中,我们将使用 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;

输出: