Disons que j'ai un simple tableau agg_test
avec 3 colonnes - id
, column_1
et column_2
. Dataset, par exemple:Agréger par agrégat (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
Une requête comme celui-ci (avec auto join):
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
produira un résultat comme celui-ci:
column_1|column_1|array_agg
---------------------------
1| 2| {1}
1| 3| {2}
1| 4| {3,4}
1| 5| {3,4}
Nous pouvons voir que pour les valeurs 4 et 5 de la table jointe nous avons le même résultat dans la dernière colonne. Donc, est-il possible de grouper les résultats par ce biais, par exemple:
column_1|column_1|array_agg
---------------------------
1| {2}| {1}
1| {3}| {2}
1| {4,5}| {3,4}
Merci pour les réponses. Si quelque chose n'est pas clair ou peut être mieux présenté - dites-moi dans les commentaires et je vais essayer de rendre cette question aussi lisible que possible.
Merci, fonctionne parfaitement pour moi. – Przemek