簡體   English   中英

SQL-匯總“嵌套”值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM