sql >> Databasteknik >  >> RDS >> PostgreSQL

Aggregering av anslutna uppsättningar av noder/kanter

En rekursiv fråga är vägen att gå:

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;

Det viktiga är att behålla rotnodens ID i varje rekursion, så att du kan gruppera efter det ID:t i slutresultatet.




  1. Django - OperationalError:(2006, 'MySQL-servern har försvunnit')

  2. Hur släpper jag och fyller i mysql-databaser igen?

  3. INFOGA flera poster med ruby ​​on rails aktiva post

  4. mysql + importera en fil med mellanslag i kolumnrubriken + hur man hanterar