sql >> Databáze >  >> RDS >> PostgreSQL

DISTINCT se dvěma array_agg (nebo jedním array_agg s n-ticí uvnitř)?

Podobné tomu, co jsem odpověděl na vaši předchozí otázku , pouze pomocí ARRAY of rows jak jste navrhli, a kratší poziční zápis:

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

Ale více se mi líbí druhá verze s 2-rozměrným polem.




  1. Jak zjistit počet číslic věšteckého čísla

  2. Převod mezi klauzulí na spojení

  3. Při vytváření webu pro sdílení videa potřebujete přehrávač videí

  4. Jak nainstalovat a zabezpečit MariaDB 10 v CentOS 6