`

oracle 层次树统计

阅读更多
统计部门的员工个数(员工个数=本部门人数+下级部门人数)

部门表:


员工表:




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;





  • 大小: 23.5 KB
  • 大小: 43.7 KB
  • 大小: 22.7 KB
分享到:
评论

相关推荐

    ORACLE重建索引总结

    4、索引高度:索引高度是指由于数据行的插入操作而产生的索引层数,当表中添加大量数据时,oracle将生成索引的新层次以适应加入的数据行,因此,oracle索引可能有4层,但是这只会出现在索引数中产生大量插入操作的...

    MySQL实现树状所有子节点查询的方法

    在MySQL中如果是有限的层次,比如我们事先如果可以确定这个树的最大深度是4, 那么所有节点为根的树的深度均不会超过4,则我们可以直接通过left join 来实现。 但很多时候我们无法控制树的深度。这时就需要在MySQL...

    经典SQL脚本大全

    │ │ 8.2.2 树形数据层次显示处理示例.sql │ │ 8.2.2 树形数据广度排序处理示例.sql │ │ 8.2.2 树形数据深度排序处理示例(模拟单编号法).sql │ │ 8.2.2 树形数据深度排序处理示例(递归法).sql │ │ 8.2.3 ...

    Sqlserver2000经典脚本

    │ 8.1.4 生成编码规则调整处理T-SQL语句的函数.sql │ │ 8.1.5 删除节点处理的通用存储过程.sql │ │ 8.1.5 移动节点处理的通用存储过程.sql │ │ 8.2.2 树形数据层次显示处理示例.sql │ │ ...

    jpivot学习总结.doc

    <jp:mondrianQuery dataSource="" id="query01" jdbcDriver="oracle.jdbc.driver.OracleDriver" jdbcUrl="jdbc:oracle:thin:ngykt/ngyktadmin@172.16.46.241:1521:orcl10" catalogUri="/WEB-INF/queries/feeSchema....

    Java开发实战1200例(第1卷).(清华出版.李钟尉.陈丹丹).part3

    实例154 按继承层次对类排序 201 实例155 查看内部类信息 202 7.2 反射的进阶 203 实例156 动态设置类的私有域 203 实例157 动态调用类中的方法 204 实例158 动态实例化类 205 实例159 创建长度可变的数组 206 实例...

    asp.net知识库

    .net 2.0 访问Oracle --与Sql Server的差异,注意事项,常见异常 Ado.net 与NHibernate的关系? 动态创建数据库 SQL Server数据库安全规划全攻略 .net通用数据库访问组件SQL Artisan应用简介1 在Framework1.0下...

    测试培训教材

    QC支持的数据库:Oracle、SQLServer QC支持的操作系统:Windows、Linux、Solaris 支持群集: 服务器端硬件和数据库要求: Windows: Linux: Solaris: 客户端系统要求: 练习1:安装QC 详见...

Global site tag (gtag.js) - Google Analytics