START WITH CONNECT BY PRIOR这个语法主要用于查询数据包中的树型结构关系 在遍历树形结构的时候可以使用
------原始数据
语法-----
start with (从某个节点id开始)
connect by prior (字节点id和父节点pid直接的关系需要)
可以向上查询 可以向下查询
--例子1:
-- empno 相当于id(父节点)---mgr 相当于pid(子节点)
select * from emp
start with empno=7369
connect by prior mgr = empno
--- mgr (pid(子节点)) 与empno (id(父节点)) 谁在前或后 有区别
-- pid 在前 id 在后 想上查询 ID在前 pid在后 向下查询
-- 这个例子 - 首先找 7369 然后找到7369的上级 在向上找领导 找到最后没有上级的7839
-- empno=7839 后就只会找到一个 king 没有上级领导
--2: ID在前 pid在后 向下查询
select * from emp
start with empno=7839
connect by prior empno =mgr
3---多个节点 向上查询
select * from emp
start with empno=7369 or empno=7934
connect by prior mgr = empno
4-- 加上 过滤
select * from emp
where empno <> 7782
start with empno=7369 or empno=7934
connect by prior mgr = empno
5-- 加 排序
select * from emp
where empno <> 7782
start with empno=7369 or empno=7934
connect by prior mgr = empno
order by sal desc
select deptno,ename,sal,
sum(sal) over (order by ename) ,
sum(sal) over (),
1000*round(sal/sum(sal) over (),4)
from emp
where deptno in(10,20)