[英]SQL - Summarizing “Nested” Values
我正在使用我的SQL,無法完全確定如何獲取所需的內容,也找不到類似的問題
“節點Sid”的每個字段都有一個“父Sid”字段。 某些“節點端”被多次列出,這不是問題。 我在查找每個節點SID的(直接和間接)后代或“子代”總數時遇到問題。
這是數據的一個例子
Node Sid Parent Sid
2011 2010
2012 2010
2013 2010
2014 2010
2010 2009
2009 2008
在這種情況下,我怎么能找到嵌套在2009下的總數。我當前的SQL給了我每個節點Sid,但是沒有嵌套在下面的總數。
SELECT COUNT(PARENT_NODE_SID) AS "NODES"
FROM NODE_V
GROUP BY PARENT_NODE_SID
我正在尋找的結果將是這樣
Node Sid Count of Node Sid
2011 0
2012 0
2013 0
2014 0
2010 4
2009 5
本質上,節點Sid的計數將包括它被列為“父Sid”的所有時間,以及列出它的節點Sid被“父Sid”的所有時間。
with inputs (Node_Sid, Parent_Sid) as (
select 2011, 2010 from dual union all
select 2012, 2010 from dual union all
select 2013, 2010 from dual union all
select 2014, 2010 from dual union all
select 2010, 2009 from dual union all
select 2009, 2008 from dual
)
select node_sid, count(*) as cnt
from (
select connect_by_root(parent_sid) as node_sid
from inputs
connect by prior node_sid = parent_sid
)
group by node_sid
union all
select node_sid, 0 as cnt
from inputs
where node_sid not in (select parent_sid from inputs)
;
NODE_SID CNT
-------- ---
2009 5
2010 4
2008 6
2012 0
2013 0
2014 0
2011 0
我可能無法完全理解您的問題,但是您是否正在尋找類似的東西?
SELECT PARENT_NODE_SID,COUNT(*)
FROM NODE_V
GROUP BY PARENT_NODE_SID
ORDER BY PARENT_NODE_SID
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.