У меня есть данные для многих дифф. набор неориентированных графов в таблице (например, отношения смежных списков, один узел соединен со всеми узлами), и мне нужно сгруппировать все отдельные неориентированные графы.
Например: все узлы конкретных неориентированных графов будут в группе, и имя группы будет мин. узла.
sel d.adj_node, min(d.adj_node) Over (Partition By a.node) as grp
table a
left join table b
on a.adj_node=b.node
left join table c
on b.adj_node=c.node
left join table d
on c.adj_node=d.node;
Теперь я выполняю самообъединение 4,5 раза, а затем поверх этого запроса делаю его разбиение, чтобы получить желаемый результат. Но выполнение самосоединения 4 5 раз создает проблемы с производительностью.
Итак, вам нужен рекурсивный sql, хранимая процедура или какая-то другая логика, чтобы сделать то же самое для всех уровней. Входные данные и необходимые выходные данные будут выглядеть следующим образом: ссылка Ждем некоторых предложений.
Input Table
node adj_node
1 2
2 1
2 3
2 5
2 6
2 7
3 2
3 4
4 3
4 5
4 6
4 7
5 2
5 4
6 2
6 4
6 8
7 2
7 4
8 6
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
10 11
11 10
11 13
11 14
12 13
12 14
13 11
13 12
13 14
14 11
14 12
14 13
10 10
11 11
12 12
13 13
14 14
Output
node grp
1 1
2 1
3 1
4 1
5 1
6 1
7 1
8 1
10 10
11 10
12 10
13 10
14 10