2017-10-20 178 views
0

我想要拿出最好的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

回答

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

相關問題