我想使用 group-by 查询连接两列,从而生成一个用括号分隔的数组。我知道这个问题与这个问题有关,但像往常一样,我的用例有点不同。
一个简单的例子(也作为SQL Fiddle)。目前我的查询返回以下内容:
ID X Y
3 0.5 2.71
3 1.0 2.50
3 1.5 2.33
6 0.5 2.73
6 1.5 2.77
但是我想连接/聚合X
/Y
列以获得以下内容:
ID XY
3 [[0.5,2.71],[1.0,2.50],[1.5,2.33]]
6 [[0.5,2.73],[1.5,2.77]]
目前,我尝试将列连接为一个,如下所示:
SELECT "ID",concat_ws(', ',"X", "Y") as XY FROM Table1;
返回:
ID xy
3 0.5, 2.71
3 1, 2.50
3 1.5, 2.33
6 0.5, 2.73
并使用array_agg()
:
SELECT "ID",array_to_string(array_agg("X"),',') AS XY
FROM Table1
GROUP BY "ID";
导致:
ID xy
3 0.5,1,1.5
6 0.5
我觉得我越来越近了,但非常感谢您的帮助。