查询Hive中每个节点的子节点的数量

查询Hive中每个节点的子节点的数量

问题描述:

我想要拿出最好的HiveQL查询来获取行列表,其中一列将具有该节点具有的(直接)子节点的数量。数据库是分层的,所以它看起来是这样的:查询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

尝试这样的事情与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