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