姓名,级别,上级,收入
('张三',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),比如一个公司有很多个项目经理,项目经理下面团队负责人,团队负责人下面有小组长,小组长下面有普通员工,不过项目经理下面也可以直接有团队负责人和普通员工,团队负责人下面也可以直接有普通员工,我要求的就是每个项目经理下面所有的普通员工(只能普通员工)的收入和

解决方案 »

  1.   

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

  2.   

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

  3.   

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

  4.   

    试试我的这个怎么样,没有环境进行测试
    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.姓名1
      

  5.   

    不好意思,写错了.
    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