相关疑难解决方法(0)

PostgreSQL array_agg命令

表'动物':

animal_name animal_type
Tom         Cat
Jerry       Mouse
Kermit      Frog
Run Code Online (Sandbox Code Playgroud)

查询:

SELECT 
array_to_string(array_agg(animal_name),';') animal_names,
array_to_string(array_agg(animal_type),';') animal_types
FROM animals;
Run Code Online (Sandbox Code Playgroud)

预期结果:

Tom;Jerry;Kerimt, Cat;Mouse;Frog
OR
Tom;Kerimt;Jerry, Cat;Frog;Mouse
Run Code Online (Sandbox Code Playgroud)

我可以确定第一个聚合函数中的顺序将始终与第二个中的顺序相同.我的意思是我不想得到:

Tom;Jerry;Kermit, Frog;Mouse,Cat
Run Code Online (Sandbox Code Playgroud)

postgresql array-agg

90
推荐指数
3
解决办法
6万
查看次数

PostgreSQL多维数组

我试图将数据作为一个多维数组传递,我的行为对我来说似乎很奇怪.具体来说,我试图从二维数组中获取单个元素(因此我的二维数组中的一维数组),并且它不能按照我期望的方式工作.

在下面的例子中,#2,4和5以我期望的方式工作,但1和3没有.

db=> select s.col[2] from (select array[[1,2,3],[4,5,6]] as col) s;
 col
-----

(1 row)

db=> select s.col[2:2] from (select array[[1,2,3],[4,5,6]] as col) s;
 col 
-----
 {{4,5,6}}
(1 row)

db=> select array[s.col[2]] from (select array[[1,2,3],[4,5,6]] as col) s;
 array  
--------
 {NULL}
(1 row)

db=> select array[s.col[2:2]] from (select array[[1,2,3],[4,5,6]] as col) s;
    array    
 -------------
 {{{4,5,6}}}
(1 row)

db=> select s.col[2][1] from (select array[[1,2,3],[4,5,6]] as col) s;
 col 
-----
   4
(1 row)
Run Code Online (Sandbox Code Playgroud)

有这方面的文件吗?我现在有一些对我来说运作良好的东西,但它很难看,我担心它不会做我想做的事情.从技术上讲,我得到一个二维数组,其中1维只有1个元素.我宁愿得到一个阵列.

我读过(其中包括):

我只是没有看到我在寻找什么.

arrays postgresql multidimensional-array unnest

6
推荐指数
1
解决办法
9266
查看次数

如何从2d数组postgresql中选择1d数组

我有2d数组,并且只想选择它的第一个元素,即1d数组.我怎么做?

arrays postgresql

5
推荐指数
1
解决办法
3860
查看次数

如何在 PostgreSQL 中快速将二维数组取消嵌套到一维数组中?

我有一个非常大的数组,我使用 Apache Madlib 进行了计算,我想对该二维数组中的每个数组应用一个操作。

我找到了可以帮助我从这个相关答案中解除它的代码。然而,在这个非常大的 2d 数组(150,000+ 1d float 数组)上,代码非常慢。虽然unnest()只需要几秒钟的时间来运行,但即使等待了几分钟,代码也还没有完成。

当然,必须有一种更快的方法将大型二维数组解除嵌套到较小的一维数组中?如果该解决方案使用 Apache Madlib,则加分。我确实在名为 的文档中找到了一条线索deconstruct_2d_array,但是,当我尝试在矩阵上调用该函数时,它失败并出现以下错误:

错误:函数“deconstruct_2d_array(double precision[])”:无效的类型转换。内部复合类型比后端复合类型有更多的元素。

sql arrays postgresql performance madlib

3
推荐指数
1
解决办法
2606
查看次数

Postgresql:数组的动态切片表示法

读完这篇文章后,我写了一个天真的尝试来制作这个

col1
---------
1
4
7
Run Code Online (Sandbox Code Playgroud)

由此

ARRAY[[1,2,3], [4,5,6], [7,8,9]]

这有效

SELECT unnest((ARRAY[[1,2,3], [4,5,6], [7,8,9]])[1:3][1:1]);

但就我而言,我不知道外部数组的长度。

那么有没有一种方法可以将切片“字符串”组合在一起以考虑到这种可变性?

这是我的尝试。我知道,这有点好笑

_ids := _ids_2D[('1:' || array_length(_ids_2D, 1)::text)::int][1:1];

正如你所看到的,我只是想创建 的效果[1:n]。显然'1:3'不会很好地解析数组切片所需的内容。

我显然可以使用unnest_2d_1d上面链接的答案中欧文提到的东西,但希望有更优雅的东西。

arrays postgresql

0
推荐指数
1
解决办法
1654
查看次数