sql >> Database >  >> RDS >> PostgreSQL

DISTINCT met twee array_agg (of één array_agg met tuple erin)?

Vergelijkbaar met wat ik heb beantwoord op uw voorgaande vraag , alleen met ARRAY of rows zoals je suggereerde en kortere positionele notatie:

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();

Maar ik vind de andere versie met een 2-dimensionale array beter.




  1. Verduidelijking op rijnum

  2. Incrementele client-updates implementeren met rowversions in Postgres

  3. Schakel tijdelijk alle beperkingen voor externe sleutels uit

  4. Hoe kan ik AND's en OR's combineren in mijn SQL-statement?