CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Oracle >  开发

怎么写这个sql

楼主orcher(orcher)2006-05-04 00:13:18 在 Oracle / 开发 提问

 
  姓名,级别,上级,收入  
  ('张三',1,'kkk',100)  
  ('里司',2,'张三',100)  
  ('望物',3,'里司',100)  
  ('找六',4,'望物‘,3000)  
  ('无7',1,'kkk',100)  
  ('六8',2,'无7',100)  
  ('起9',3,'六8',3000)  
  ('两10',4,'起9’,3000)  
  ('蔡11',4,'张三',3000)  
  找出每个级别为1,的下面所有级别为4的收入和(仅仅是为4),比如一个公司有很多个项目经理,项目经理下面团队负责人,团队负责人下面有小组长,小组长下面有普通员工,不过项目经理下面也可以直接有团队负责人和普通员工,团队负责人下面也可以直接有普通员工,我要求的就是每个项目经理下面所有的普通员工(只能普通员工)的收入和  
  问题点数:100、回复次数:6Top

1 楼hevin(没有什么是不可能的)回复于 2006-05-04 02:28:55 得分 25

写了一个,但没有搭试验环境测试,楼主可以试试  
   
  select   上级,sum(收入)  
  from   (  
  select   上级,   收入      
  from   表名  
  where   级别   =   4  
  start   with   级别   =   1  
  connect   by   prior   姓名   =   上级  
  )   A   group   by   上级  
   
   
  可能也可以不用子查询。Top

2 楼zlz_212(ShREk)回复于 2006-05-04 09:15:08 得分 0

不是很难,等待最简便写法Top

3 楼orcher(orcher)回复于 2006-05-04 15:14:53 得分 0

写了一个,但没有搭试验环境测试,楼主可以试试  
   
  select   上级,sum(收入)  
  from   (  
  select   上级,   收入      
  from   表名  
  where   级别   =   4  
  start   with   级别   =   1  
  connect   by   prior   姓名   =   上级  
  )   A   group   by   上级  
  ----------这个有问题select   上级,sum(收入),设个上级是直接上级,而不是需要的项目经理这一级Top

4 楼kingofworl(良辰美景虚度)回复于 2006-05-05 20:37:29 得分 25

select   sum(charge)   from   tab   where   level   =4     and   上级   in    
  (select   上级   from   tab   group   by   level   having   level=1)   group   by   上级Top

5 楼duongchuang()回复于 2006-05-07 14:37:23 得分 0

试试我的这个怎么样,没有环境进行测试  
   
   
  Select   t.姓名1,sum(j.收入)  
  (Select   j1.姓名   as   姓名1,j.姓名   as   姓名2,j.收入  
   
  (Select     j2.姓名,j2.上级   From   表名   Where   上级   In  
  (Select   j1.姓名,j1.上级   From   表名   Where   上级   In  
  (select   姓名   From   表名   Where     级别   =   1)   j1)j2)j3,  
   
  (Select   j1.姓名,j1.上级   From   表名   Where   上级   In  
  (select   姓名   From   表名   Where     级别   =   1)   j1)j2,  
  (select   姓名   From   表名   Where     级别   =   1)   j1,  
  表名   j  
  Where   j.上级   =   j3.姓名   And   j3.上级   =   j2.姓名   And     j2.上级.   =   j1.姓名)   t  
  Group   by   t.姓名1Top

6 楼duongchuang()回复于 2006-05-07 14:51:49 得分 50

不好意思,写错了.  
  Select   t.姓名1,sum(t.收入)  
  From    
  (Select   j1.姓名   as   姓名1,j.姓名   as   姓名2,j.收入  
   
  (Select     j2.姓名,j2.上级   From   表名   Where   上级   In  
  (Select   j1.姓名,j1.上级   From   表名   Where   上级   In  
  (select   姓名   From   表名   Where     级别   =   1)   j1)j2)j3,  
   
  (Select   j1.姓名,j1.上级   From   表名   Where   上级   In  
  (select   姓名   From   表名   Where     级别   =   1)   j1)j2,  
  (select   姓名   From   表名   Where     级别   =   1)   j1,  
  表名   j  
  Where   j.上级   =   j3.姓名   And   j3.上级   =   j2.姓名   And     j2.上级.   =   j1.姓名)   t  
  Group   by   t.姓名1  
  Top

相关问题

关键词

得分解答快速导航

  • 帖主:orcher
  • hevin
  • kingofworl
  • duongchuang

相关链接

  • Oracle类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo