PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

DISTINCT avec deux array_agg (ou un array_agg avec tuple à l'intérieur) ?

Semblable à ce que j'ai répondu à votre question précédente , juste avec ARRAY of rows comme vous l'avez suggéré et une notation positionnelle plus courte :

SELECT DISTINCT ON (1)
       p, groundtruth, array_agg(ROW(anchor_id, id)) AS ids
FROM (
   SELECT DISTINCT ON (1, 2, 3)
          ps.p, m.groundtruth, m.anchor_id, m.id
   FROM  (SELECT unnest(point_array) AS p) AS ps
   JOIN   measurement m ON ST_DWithin(ps.p, m.groundtruth, distance)
   ORDER  BY 1, 2, 3, random()
   ) x
GROUP  BY 1, 2
ORDER  BY 1, random();

Mais j'aime mieux l'autre version avec un tableau à 2 dimensions.