在多个列上查询不同并在 Postgres 中聚合其他列

Query distinct on multiple columns and aggregate others in Postgres

我有一个 table 这样的:

X,Y,Z,A,B,C
X,Y,Z,D,E,F
X,Y,Z,G,H,I
X,Y,W,A,C,D
X,Y,W,H,I,J

显然它是非标准化的table。我想要一个 returns 以下结果的查询:

X,Y,Z,{{A,D,G},{B,E,H},{C,F,I}}
X,Y,W,{{A,H},{C,I},{D,J}}

归一化很有expensive.Any想法?

试试这个:

SELECT c1,c2,c3,ARRAY[array_agg(c4),array_agg(c5)]
from your_table
group by c1,c2,c3