比如有這樣的需求重要的,現(xiàn)在要裁員開展研究,將某個部門的員工包括經(jīng)理全部裁掉,那么可以使用樹形查詢作為子查詢實現(xiàn)這個功能無限層次樹形筆記本 相互融合。將id為2 的員工管理的所有員工包括自己刪除首要任務。因為要全部裁掉了。那么語句如下:
delete from s_emp where id in(
select id from
無限層次樹形筆記本s_emp a
start with id=2 –從id=2的員工開始查找其子節(jié)點技術交流,把整棵樹刪除
connect by prior id=manager_id);
5)找出每個部門的經(jīng)理
無限層次樹形筆記本 這個需求先進的解決方案,我們可以從樹中查找,也就是對于每個部門選最高等級節(jié)點⌒v活動?梢允褂胏onnect by后加條件過濾branches 的方法不斷進步。
select level,a.* from
s_emp a
start with manager_id is null
connect by prior id=manager_id and dept_id !=prior dept_id;--當前行的dept_id不等于前一行的dept_id,即每個子樹中選最高等級節(jié)點
6)查詢一個組織中最高的幾個等級
用where level條件過濾
select level,a.* from
s_emp a
where level <=2 –查找前兩個等級
無限層次樹形筆記本 start with manager_id is null
connect by prior id=manager_id and dept_id !=prior dept_id;
7)合計層次
有兩個需求效率,一是對一個指定的子樹subtree 做累加計算salary規模,一是將每行都作為root節(jié)點,然后對屬于這個節(jié)點的所有字節(jié)點累加計算salary適應性。
第一種很簡單節點,求下sum就可以了,語句:
select sum(salary) from
s_emp a
start with id=2—比如從id=2開始
connect by prior id=manager_id;
第2 個需求落地生根,需要用到第1 個的特點,對每個root 節(jié)點求這個樹的累加值,然后內(nèi)部層次查詢的開始節(jié)點從外層查詢獲得有效保障。
select last_name,salary,(
select sum(salary) from
s_emp
start with id=a.id --讓每個節(jié)點都成為root
connect by prior id=manager_id) sumsalary
from s_emp a;
文章地址:http://61py.com/article/other/sczs.html