比方說,我有一個簡單的表agg_test
3列 - id
,column_1
和column_2
。數據集,例如:聚合聚合(ARRAY_AGG)?
id|column_1|column_2
--------------------
1| 1| 1
2| 1| 2
3| 1| 3
4| 1| 4
5| 2| 1
6| 3| 2
7| 4| 3
8| 4| 4
9| 5| 3
10| 5| 4
這樣的查詢(帶自加入):
SELECT
a1.column_1,
a2.column_1,
ARRAY_AGG(DISTINCT a1.column_2 ORDER BY a1.column_2)
FROM agg_test a1
JOIN agg_test a2 ON a1.column_2 = a2.column_2 AND a1.column_1 <> a2.column_1
WHERE a1.column_1 = 1
GROUP BY a1.column_1, a2.column_1
會產生這樣的結果:
column_1|column_1|array_agg
---------------------------
1| 2| {1}
1| 3| {2}
1| 4| {3,4}
1| 5| {3,4}
我們可以看到,值4在連接表中有5個,我們在最後一列有相同的結果。因此,是否有可能以某種方式組的結果通過它,e.g:
column_1|column_1|array_agg
---------------------------
1| {2}| {1}
1| {3}| {2}
1| {4,5}| {3,4}
感謝您的任何答案。如果有什麼不清楚或者能夠以更好的方式呈現 - 請在評論中告訴我,我會盡量讓這個問題儘可能可讀。
謝謝,對我完美的作品。 – Przemek 2013-03-27 15:41:00