怎么写这个sql
姓名,级别,上级,收入
('张三',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




