PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Агрегиране на свързани набори от възли / ръбове

Рекурсивната заявка е правилният начин:

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;

Важното е да запазите идентификатора на основния възел във всяка рекурсия, така че да можете да групирате по този идентификатор в крайния резултат.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да нулирате последователността за идентификатори на PostgreSQL таблици

  2. Преброяване на редове след свързване на три таблици в PostgreSQL

  3. Писане на JSON колона в Postgres с помощта на Pandas .to_sql

  4. Сървърът неочаквано затваря връзката при свързване към Azure Postgres

  5. Micronaut не се свързва с db в yml