階層の下に設定されたフラグのセットが 1 つだけのプライマリ チャネル (階層の最上位) を識別する必要があります。以下のケースでは、下に 2 つのフラグがあるため、US は有効なプライマリ チャネルではありません。有効なプライマリ チャネルのみが US1、US2、UK です。
可能であれば、単一のクエリで解決したいと思います。それ以外の場合は、手順に従ってオプションを検討します。
階層クエリ、group by、count(flag) でいくつかのバリエーションを試しましたが、どういうわけか「US」を削除して目的の結果を得ることができません。
このユースケースの高レベルのアプローチで誰かが私を助けてくれれば幸いです。
入力データ
---------------------------------
channel | flag | parent channel
---------------------------------
US | |
US1 | | US
A1 | yes | US1
A2 | | A1
A3 | | A2
US2 | | US
B1 | | US2
B2 | yes | B1
B3 | | B2
UK | |
C1 | | UK
C2 | | C1
C3 | yes | C2
---------------------------------
入力データを使用したフラグ数を持つ複数の階層
---------------------
channel | flag count
---------------------
US | 2
US1 | 1
A1 | 1
A2 | 0
A3 | 0
US2 | 1
B1 | 1
B2 | 1
B3 | 0
UK | 1
C1 | 1
C2 | 1
C3 | 1
----------------
出力
---------------------------------
primary channel
---------------------------------
US1
US2
UK
---------------------------------