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

Agregacja połączonych zbiorów węzłów/krawędzi

Sposobem na to jest zapytanie rekurencyjne:

with recursive tree as (
  select node, parent, length, node as root_id
  from network
  where parent is null
  union all
  select c.node, c.parent, c.length, p.root_id
  from network c
    join tree p on p.node = c.parent
)
select root_id, array_agg(node) as edges_in_group, sum(length) as total_length
from tree
group by root_id;

Ważną rzeczą jest zachowanie identyfikatora węzła głównego w każdej rekursji, aby można było pogrupować według tego identyfikatora w wyniku końcowym.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pobieranie danych i18n z językiem awaryjnym

  2. Połącz wiele instrukcji SELECT

  3. Ograniczenia dotyczące zmian schematu PostgreSQL w transakcjach?

  4. Grupa stref czasowych RoR Postgresql przez niedziałanie na Heroku

  5. Przegląd oferty Amazon RDS i Aurora dla PostgreSQL