首页 > 代码库 > CONNECT_BY_ROOT
CONNECT_BY_ROOT
1.select * from EMP t where t.deptno = 10;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
7782 CLARK MANAGER 7839 1981/6/9 2450.00 10
7839 KING PRESIDENT 1981/11/17 5000.00 10
7934 MILLER CLERK 7782 1982/1/23 1300.00 10
7782 CLARK MANAGER 7839 1981/6/9 2450.00 10
7839 KING PRESIDENT 1981/11/17 5000.00 10
7934 MILLER CLERK 7782 1982/1/23 1300.00 10
2.使用connect_by_root,显示名字和薪水,如果有下属,那么还显示上司的名字和下属薪水的组合
SELECT CONNECT_BY_ROOT t.ename as name , t.sal
FROM emp t
WHERE t.deptno = 10
CONNECT BY PRIOR t.empno = t.mgr;
NAME SAL
MILLER 1300.00
CLARK 2450.00
CLARK 1300.00
KING 5000.00
KING 2450.00
KING 1300.00
MILLER 1300.00
CLARK 2450.00
CLARK 1300.00
KING 5000.00
KING 2450.00
KING 1300.00
3.下面我就可以利用上面的铺垫查询每个人管理的组(他们团队的平均薪水了)
SELECT name ,avg(sal)
FROM
(SELECT CONNECT_BY_ROOT t.ename as name, t.sal
FROM emp t
WHERE t.deptno = 10
CONNECT BY PRIOR t.empno = t.mgr
)
GROUP BY name ;
NAME AVG(SAL)
MILLER 1300 --他是最底层的码农,没有下属
CLARK 1875 --他管了一个人,那个码农,平均薪水(2450 + 1300) / 2
KING 2916.66666666667 --他是部门10的boss,两个下属
MILLER 1300 --他是最底层的码农,没有下属
CLARK 1875 --他管了一个人,那个码农,平均薪水(2450 + 1300) / 2
KING 2916.66666666667 --他是部门10的boss,两个下属
转自: http://blog.chinaunix.net/uid-26896647-id-3424394.html
CONNECT_BY_ROOT
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。