關於rollup的簡單用法和層次查詢
阿新 • • 發佈:2019-01-24
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;