统计部门的员工个数(员工个数=本部门人数+下级部门人数) 部门表:
员工表:
sql 语句:
- with temp as(
- select t1.deptid as id, t1.supdeptid parent, num, level levs,t1.deptname
- from dept t1
- left join (select deptid, count(t.deptid) num
- from emp t
- group by t.deptid) t2 on t1.deptid = t2.deptid
- start with t1.supdeptid is null
- connect by prior t1.deptid = t1.supdeptid)
- select lpad(" ", 4 * levs, " ")||id as id,lpad(" ", 4 * levs, " ")||deptname as deptname,
- (select nvl(num, 0) from temp where id = t.id) +
- (select nvl(sum(num), 0)
- from temp
- connect by parent = prior id
- start with parent = t.id) cnt
- from temp t
查询结果:
Oracle10g sql语句:
- select a.root as id, nvl(sum(b.num), 0) num
- from (select id, fid, connect_by_root(id) root
- from (select d.deptid as id, d.supdepid as fid from dept d start with d.supdepid is null
- connect by prior d.deptid = d.supdepid)
- connect by prior id = fid) a
- left join (select deptid, count(t.deptid) num from emp t group by t.deptid) b on a.id =
- b.deptid
- group by root
- order by root;
Win 7下Oracle数据库的安装(Oracle 10g)Oracle脚本导入导出 用于新项目升级相关资讯 Oracle数据库 Oracle入门教程 oracle数据库教程
- Oracle数据库全球化 (03月01日)
- Oracle数据库日期过滤方法性能比较 (02/02/2015 13:20:26)
- Oracle数据库安装中端口被占用问题 (10/29/2014 07:42:24)
| - 在CentOS 6.6上搭建C++运行环境并 (10/10/2015 19:44:40)
- Oracle数据库无法使用localhost和 (11/14/2014 16:39:10)
- 使用SQLT来构建Oracle测试用例 (08/28/2014 06:17:41)
|
本文评论 查看全部评论 (0)