gpt4 book ai didi

arrays - 如何在 PostgreSQL 中分组和连接数组

转载 作者:行者123 更新时间:2023-11-29 11:58:15 26 4
gpt4 key购买 nike

我在 PostgreSQL 中有一张表。我想在按 time 分组后连接所有数组(即 col)。数组具有不同的维度。

| time  | col               |
|------ |------------------ |
| 1 | {1,2} |
| 1 | {3,4,5,6} |
| 2 | {} |
| 2 | {7} |
| 2 | {8,9,10} |
| 3 | {11,12,13,14,15} |

结果应该是这样的:

| time  | col               |
|------ |------------------ |
| 1 | {1,2,3,4,5,6} |
| 2 | {7,8,9,10} |
| 3 | {11,12,13,14,15} |

目前我的想法如下:

SELECT ARRAY(SELECT elem FROM tab, unnest(col) elem);

但这并没有进行分组。它只获取整个表格并将其连接起来。

最佳答案

要保持数组的相同维度,您不能直接使用 array_agg(),因此首先我们unnest 您的数组并应用 distinct 删除重复项 (1)。在外部查询中,这是聚合的时间。要保留值排序,请在聚合函数中包含 order by:

select time, array_agg(col order by col) as col
from (
select distinct time, unnest(col) as col
from yourtable
) t
group by time
order by time

(1) 如果您不需要重复删除,只需删除 distinct 单词即可。

关于arrays - 如何在 PostgreSQL 中分组和连接数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51101596/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com