PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

DISTINCT z dwoma array_agg (lub jednym array_agg z krotką w środku)?

Podobnie jak w odpowiedzi na Twoje poprzednie pytanie , tylko z ARRAY of rows tak jak sugerowałeś i krótszą notację pozycyjną:

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 podoba mi się druga wersja z dwuwymiarową tablicą.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wystąpił wyjątek DBConcurrency podczas aktualizacji za pomocą adaptera danych

  2. Jak przetestować wpis w crontab?

  3. Chcę zwrócić nową kolumnę przy użyciu Rekursywnie w SQL?

  4. Przeprowadzanie dużej aktualizacji przy użyciu wielu tabel w PostgreSQL

  5. Jaki typ znacznika czasu wybrać w bazie danych PostgreSQL?