![](/img/trans.png)
[英]PostgreSQL: concatenate nested arrays with differing element dimensions
[英]How to Group by and concatenate arrays in PostgreSQL
我在 PostgreSQL 中有一張表。我想在按time
分組后連接所有數組(即col
)。 arrays 具有不同的尺寸。
| 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
在聚合函數中包括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
單詞即可。
你可以使用下一個查詢
SELECT
array_agg(_unnested.item) as array_coll
from my_table
left join LATERAL (SELECT unnest(my_table.array_coll) as item) _unnested ON TRUE
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.