查询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 |
答
尝试这样的事情与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
为什么'mysql'标签?你真的需要这种基本的SQL查询帮助吗?!? –
对不起,mysql标签是个错误。这个查询对我来说似乎不是基本的,但是@SamsonScharfrichter如果你确实有解决方案,你可以与我分享吗? – cheickmec