Sql 函数从一个数据组创建N个数组

Sql 函数从一个数据组创建N个数组,sql,arrays,postgresql,aggregate-functions,Sql,Arrays,Postgresql,Aggregate Functions,我是PL/pgsql新手,我想创建一个新函数 就我而言,我有以下表格: Column 1: VARIABLE = 2 2 2 2 2 2 2 2 2 2 Column 2: VALUE = 20 20 20 20 180 180 180 180 180 180 Column3: STRETCH = 1 1 1 1 1 1 2 2 2 2 第1列:变量=2 第2列:值=20 20 180 180 第3列:拉伸=1 2 2 我想做一个函数,从字段值创建N个数组,其中拉伸不同,例如: Array 1:

我是PL/pgsql新手,我想创建一个新函数

就我而言,我有以下表格:

Column 1: VARIABLE = 2 2 2 2 2 2 2 2 2 2 Column 2: VALUE = 20 20 20 20 180 180 180 180 180 180 Column3: STRETCH = 1 1 1 1 1 1 2 2 2 2 第1列:变量=2 第2列:值=20 20 180 180 第3列:拉伸=1 2 2 我想做一个函数,从字段值创建N个数组,其中拉伸不同,例如:

Array 1: 20,20,20,20,180,180, Array 2: 180,180,180,180, 数组1:20,20,20,20180180, 阵列2:180180,
我该如何做呢?

这将是提供测试用例的一种有用方法:

CREATE TABLE tbl (variable int, value real, stretch int);
INSERT INTO tbl VALUES
  (2, 20, 1)
 ,(2, 20, 1)
 ,(2, 20, 1)
 ,(2, 20, 1)
 ,(2, 180, 1)
 ,(2, 180, 1)
 ,(2, 180, 2)
 ,(2, 180, 2)
 ,(2, 180, 2)
 ,(2, 180, 2);
你问的 你似乎需要什么 我想这样做,因为我想得到我所有的数组和 分别计算平均值


这将是提供测试用例的有用方法:

CREATE TABLE tbl (variable int, value real, stretch int);
INSERT INTO tbl VALUES
  (2, 20, 1)
 ,(2, 20, 1)
 ,(2, 20, 1)
 ,(2, 20, 1)
 ,(2, 180, 1)
 ,(2, 180, 1)
 ,(2, 180, 2)
 ,(2, 180, 2)
 ,(2, 180, 2)
 ,(2, 180, 2);
你问的 你似乎需要什么 我想这样做,因为我想得到我所有的数组和 分别计算平均值


要执行的选择应该是“按拉伸从t组中选择阵列(值)”。我想你可以自己完成这个函数吗?请提供一个合适的表定义(比如psql中的
\d tbl
),你的Postgres版本。“不同”于什么?问题是stackoverflow不允许我从我的表中附加图像捕获。无论如何,我的列是变量(整数)、值(实数)和拉伸(整数)。我的Postgresql版本是9.1。我希望从列值中得到几个数组,其中条件是拉伸值。在上面的示例中,当STRETCH的值为“1”时,我从value中获取所有值并创建一个array1,然后当STRETCH的值为“2”时,我从列value中获取所有值并创建另一个数组array2。我想这样做是因为我想得到我所有的数组,然后计算每个数组的平均值。如果你需要每个数组的平均值,那么简单的“选择拉伸,从t组逐拉伸平均值(值)”有什么问题???@Acicate:请使用问题下方的“编辑”来更新基本信息。不要把它挤进评论里。表定义不应作为图像提供。我们无法复制/粘贴图像以使用它们。此外,还可以使用SQLFIDLE提供测试用例。随机示例:要执行的选择应该是“按拉伸从t组中选择数组_agg(值)”。我想你可以自己完成这个函数吗?请提供一个合适的表定义(比如psql中的
\d tbl
),你的Postgres版本。“不同”于什么?问题是stackoverflow不允许我从我的表中附加图像捕获。无论如何,我的列是变量(整数)、值(实数)和拉伸(整数)。我的Postgresql版本是9.1。我希望从列值中得到几个数组,其中条件是拉伸值。在上面的示例中,当STRETCH的值为“1”时,我从value中获取所有值并创建一个array1,然后当STRETCH的值为“2”时,我从列value中获取所有值并创建另一个数组array2。我想这样做是因为我想得到我所有的数组,然后计算每个数组的平均值。如果你需要每个数组的平均值,那么简单的“选择拉伸,从t组逐拉伸平均值(值)”有什么问题???@Acicate:请使用问题下方的“编辑”来更新基本信息。不要把它挤进评论里。表定义不应作为图像提供。我们无法复制/粘贴图像以使用它们。此外,还可以使用SQLFIDLE提供测试用例。随机示例:
SELECT variable, stretch, avg(value) AS val_avg
FROM   tbl
GROUP  BY 1,2
ORDER  BY 1,2;