Oracle-11g

Oracle分層查詢:如何在每個級別上遵循最大值

  • October 29, 2014

我正在嘗試獲取查詢以“跟踪”每個級別中的最大值,不包括其他分支中的最大值。

這裡有一些例子來說明我想要實現的目標:

鑑於這種層次結構:

   38
     15
       10
       5
         2
         3
     17
       9
       8
     6
   26
     13
     1
     12
   18
     11
     7

我想得到:

   38
     17
       9

並不是:

   38
     17
       10
         3

就像我現在使用我想出的 sql 查詢一樣:

select lpad(' ',2*(level-1))|| max(child)
from test_connect_by  
start with parent is null
connect by prior child = parent
group by level

這會從每個級別獲得絕對最大值,而不會在級別上的每次迭代中排除其他分支。

範例數據來自http://www.adp-gmbh.ch/ora/sql/connect_by.html

提前感謝任何提示

Vlax

這似乎解決了所提出的問題。不確定是否有沒有先聚合的解決方案:

select lpad(' ',2*(level-1)) || child as result
from 
 ( select parent, max(child) as child 
   from test_connect_by 
   group by parent
 ) t 
start with parent is null 
connect by prior child = parent
order by level ;

引用自:https://dba.stackexchange.com/questions/81313