我们有一个问题将数组分组到一个数组中.我们希望将两个列中的值连接到一个单独的数组中,并聚合这些多行的数组.
鉴于以下输入:
| id | name | col_1 | col_2 |
| 1 | a | 1 | 2 |
| 2 | a | 3 | 4 |
| 4 | b | 7 | 8 |
| 3 | b | 5 | 6 |
Run Code Online (Sandbox Code Playgroud)
我们想要以下输出:
| a | { 1, 2, 3, 4 } |
| b | { 5, 6, 7, 8 } |
Run Code Online (Sandbox Code Playgroud)
元素的顺序很重要,应该与聚合行的id相关联.
我们尝试了array_agg函数:
SELECT array_agg(ARRAY[col_1, col_2]) FROM mytable GROUP BY name;
Run Code Online (Sandbox Code Playgroud)
不幸的是,这句话引发了一个错误:
ERROR: …
Run Code Online (Sandbox Code Playgroud) 给定一个包含未知树结构路径/节点的表:
| id | path_id | node
| 1 | p1 | n1
| 2 | p1 | n2
| 3 | p1 | n3
| 4 | p2 | n1
| 5 | p2 | n2
| 6 | p2 | n4
Run Code Online (Sandbox Code Playgroud)
相应的树结构将是
n1
/
n2
/ \
n3 n4
Run Code Online (Sandbox Code Playgroud)
是否可以使用 SQL 和 PostgreSQL 函数为这棵树生成一个 JSON 对象?