度量快速开发平台-专业、快速的软件定制快开平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 部件 流程 SQL
查看: 3055|回复: 7
打印 上一主题 下一主题

[分享] Oracle 层次树统计 汇总

  [复制链接]

67

主题

685

帖子

1815

积分

作者

Rank: 7Rank: 7Rank: 7

积分
1815
跳转到指定楼层
楼主
发表于 2020-6-7 09:35:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
统计部门的员工个数(员工个数=本部门人数+下级部门人数)

部门表:
层次树统计 汇总" title="Oracle 层次树统计 汇总" action-data="http%3A%2F%2Fdl.iteye.com%2Fupload%2Fattachment%2F242895%2F68da1240-04d9-388a-9ebd-b110c60f4dbd.jpg" action-type="show-slide" style="border: 0px; list-style: none; color: rgb(73, 73, 73); font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.2px;">

员工表:

层次树统计 汇总" title="Oracle 层次树统计 汇总" action-data="http%3A%2F%2Fdl.iteye.com%2Fupload%2Fattachment%2F242897%2F66a6a769-9c4a-3e2a-8cd4-6ff5d558d6fc.jpg" action-type="show-slide" style="border: 0px; list-style: none; color: rgb(73, 73, 73); font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.2px;">


sql 语句:

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   



查询结果:


层次树统计 汇总" title="Oracle 层次树统计 汇总" action-data="http%3A%2F%2Fdl.iteye.com%2Fupload%2Fattachment%2F242900%2Fe38af876-12ed-3f9e-8d77-7cb5d67d8ab2.jpg" action-type="show-slide" style="border: 0px; list-style: none; color: rgb(73, 73, 73); font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.2px;">

oracle10g sql语句:
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;  


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

78

主题

634

帖子

1598

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1598
沙发
发表于 2020-6-7 09:38:14 | 只看该作者
用于html5显示树型还是有一定的帮助。
回复 支持 反对

使用道具 举报

328

主题

3738

帖子

8566

积分

作者

Rank: 7Rank: 7Rank: 7

积分
8566
QQ
板凳
发表于 2020-6-7 14:03:12 | 只看该作者
果然牛逼!
回复 支持 反对

使用道具 举报

198

主题

1313

帖子

3784

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3784
地板
发表于 2020-6-7 15:16:55 | 只看该作者
一条sql搞定,很不错哈。
回复 支持 反对

使用道具 举报

542

主题

5916

帖子

1万

积分

作者

Rank: 7Rank: 7Rank: 7

积分
13589
5#
发表于 2020-6-7 19:09:40 | 只看该作者
不错,顶一个
回复 支持 反对

使用道具 举报

67

主题

685

帖子

1815

积分

作者

Rank: 7Rank: 7Rank: 7

积分
1815
6#
 楼主| 发表于 2020-6-8 09:33:35 | 只看该作者
回复 支持 反对

使用道具 举报

542

主题

5916

帖子

1万

积分

作者

Rank: 7Rank: 7Rank: 7

积分
13589
7#
发表于 2020-6-8 17:01:03 | 只看该作者
回复 支持 反对

使用道具 举报

348

主题

3572

帖子

9327

积分

论坛元老

Rank: 8Rank: 8

积分
9327
8#
发表于 2020-2-28 22:40:10 | 只看该作者
长见识~\(≧▽≦)/~啦啦啦
若現在就覺得失望無力,未來那麽遠妳該怎麽扛...
————————————————————————致自己
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|重庆度量科技  本站关键词:快速开发平台

GMT+8, 2024-11-24 07:50 , Processed in 0.122447 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表