0

タスクツリー内の各タスク グループの平均進行状況を判断しようとしています。問題は、(子テーブルである別のテーブルにある) リーフ ノードだけが実際に進行状況フィールドを持っていることです。

タスク(親) テーブルとアクティビティ(子) テーブルがあります。どちらもIDを共有しています。DB でltree拡張機能を使用していることを指摘しておく必要があります。

ツリー全体とノードレベルごとの平均進行状況を示す列を表示するビューを作成しようとしています。最も内側のレベルから計算を開始し、ツリー構造を構築する必要がありますが、うまくいきません。

再帰的な CTEウィンドウ関数を使用してこれにアプローチしようとしましたが、役に立ちませんでした。Postgres では、再帰 cteの再帰項で集計関数を使用できないため、機能しませんでした。

これらは私のテーブルです(簡略化):

tasks:
=======
id -- SERIAL
parent_id -- INTEGER
project_id -- INTEGER
name -- VARCHAR
task_group -- BOOL
path -- LTREE

activities:
===========
id -- INTEGER
progress -- INTEGER

編集

これは、現在のビューのスクリーンショットです。すべてのリーフノードの平均進行状況を取得できますが、それはまさに私が必要としているものではありません。ツリーの各レベルの平均進行状況を計算し、それをノード階層の上位に構築する必要があります。

タスク表

これに関する洞察は大歓迎です。前もって感謝します。

4

0 に答える 0