0

私は多くの差分のデータを持っています。テーブル内の無向グラフのセット (隣接するリストの関係のように、1 つのノードがすべてのノードに接続されている) であり、個々の無向グラフをすべてグループ化する必要があります。

例: 特定の無向グラフのすべてのノードがグループに属し、グループ名が最小になります。ノードの。

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
4

2 に答える 2