1. 程式人生 > >關於rollup的簡單用法和層次查詢

關於rollup的簡單用法和層次查詢

select t.deptno,t.job,sum(sal) from emp t group by rollup(t.deptno,t.job);

等價於

select t.deptno,t.job,sum(sal) from emp t group by t.deptno,t.job
+
select t.deptno,sum(sal) from emp t group by t.deptno
+
select sum(sal) from emp t ;

group by rollup(a,b) = group by a,b + group by a + group by null

這裡寫圖片描述

break on deptno skip 2
每個部門顯示一次,不同部門相隔2行.
這裡寫圖片描述

層次查詢;
這裡寫圖片描述

--使用這種寫法可以只查一遍emp表,既可以知道員工號和他的老闆號,不需要自連線,因為自連線在大表查詢中效率較慢.
select level, t.*
  from emp t
  --使用上一層的 員工號 = 老闆號
connect by prior t.empno = t.mgr
  --描述從樹的哪個節點出發,下面語句是從老闆號為空的節點也就是KING出發,查詢樹的結構,這個level就是樹的深度,是個偽列.
 start with t.mgr is null
 order
by level;

這裡寫圖片描述