我有如下表格:
| col_A | col_B |
|-------|-------|
| 1 | 1 |
| 1 | 2 |
| 1 | 3 |
| 2 | 1 |
| 2 | 2 |
| 2 | 3 |
| 3 | 1 |
| 3 | 2 |
我想将结果分组并连接成一个数组,如下所示:
| col_A | col_B |
|-------|-------|
| 1,2 | 1,2,3 |
| 3 | 1,2 |
我尝试编写一个查询:
SELECT col_A, array_agg(col_B ORDER BY col_B DESC) FROM table GROUP BY col_A;
然而,这会输出:
| col_A | col_B |
|-------|---------|
| 1 | {1,2,3} |
| 2 | {1,2,3} |
| 3 | {1,2} |
最佳答案
您似乎想要聚合由 col_a
分组的 col_b
,然后聚合由聚合数组分组的 col_a
。您可以使用嵌套查询来执行此操作,您已经执行了嵌套查询的第一步:
SELECT array_agg(col_a), col_b
FROM (SELECT col_a, array_agg(DISTINCT col_b ORDER BY col_b) AS col_b
FROM example GROUP BY col_a) grouped_b
GROUP BY col_b;
( online demo )
关于sql - 按多列分组并将结果作为单独列中的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58313135/