簡體   English   中英

查詢層次結構中父級以下幾級

[英]Query how many levels are below a parent in a hierarchy

我正在處理員工數據,我認為我需要編寫一個遞歸查詢,但是對它們只有一點點熟悉。 我正在努力尋找如何編寫一個查詢,該查詢可識別經理以下的級別。

數據如下所示:

    | employee    | manager    |
    |-------------+------------+
    |  employee1  |  employee1 |

    |  employee2  |  employee1 |

    |  employee3  |  employee1 |
    |  employee3  |  employee2 |

    |  employee4  |  employee1 |
    |  employee4  |  employee2 |
    |  employee4  |  employee3 |

    |  employee5  |  employee1 |

    |  employee6  |  employee1 |
    |  employee6  |  employee2 |
...

本質上,這部分告訴我:

  • employee1具有以下2個級別,因為它們管理的是employee2,而后者又管理employee3。
  • employee2 2的級別低於1
  • employee3有1個以下級別
  • employee4有0級
  • employee5 5以下有0級
  • employee6有0級

關於如何編寫此內容的任何想法/技巧? 提前致謝!

您可以使用遞歸CTE:

with recursive cte as (
      select employee, employee as s, 0 as lev
      from t
      union all
      select cte.employee, t.employee, lev + 1
      from cte join
           t
           on t.manager = cte.s and t.manager <> t.employee
     )
select distinct on (employee) employee, lev
from cte
order by employee, lev desc;

是db <> fiddle中的示例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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