2017-10-20 7 views
0

私は最良のHiveQLクエリを試して、1つの列に(直接の)子ノードがある行のリストを取得しようとしています。Hive内の各ノードの子ノードの数を問い合わせる

| ID | Some other column | ParentID | 
+-----------------------------------+ 
| 1 | XXXXXXXXXX x X X | NULL  | 
| 2 | XXXXXXXXXX x X X | 1  | 
| 3 | XXXXXXXXXX x X X | 2  | 
| 4 | XXXXXXXXXX x X X | 1  | 

そして、私はこのような何かを出力にそれを照会しようとしています:それは次のようになりますので、データベースは階層的である

| ID | Some other column | child count | 
+--------------------------------------+ 
| 1 | XXXXXXXXXX x X X | 2   | 
| 2 | XXXXXXXXXX x X X | 1   | 
| 3 | XXXXXXXXXX x X X | 0   | 
| 4 | XXXXXXXXXX x X X | 0   | 
+0

なぜ「mysql」タグですか?そして、あなたは本当にそのような基本的なSQLクエリの支援が必要ですか? –

+0

申し訳ありませんが、mysqlタグは間違いでした。このクエリは基本的なものではありませんが、@SamsonScharfrichterのソリューションがあれば、私と共有してもらえますか? – cheickmec

答えて

0

LEFT JOINと、このような何かを試してみてください。

SELECT a.id, 
     COALESCE (b.child_count, 0) "child count" 
FROM mytable a 
     LEFT JOIN (SELECT parentid, 
         Count(*) child_count 
        FROM mytable 
        GROUP BY parentid) b 
       ON a.id = b.parentid; 
+0

これは、カラム名の子カウントを囲む括弧を削除してchild_countに変更した後にのみ機能します。ありがとうKaushik! – cheickmec

関連する問題