Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1862
  • 博文数量: 1
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 10
  • 用 户 组: 普通用户
  • 注册时间: 2022-05-10 17:56
文章分类
文章存档

2022年(1)

我的朋友
最近访客

分类: Oracle

2022-05-10 17:57:33

1.select * from  EMP t  where t.deptno = 10;

EMPNO     ENAME     JOB     MGR     HIREDATE     SAL     COMM     DEPTNO
7782     CLARK     MANAGER     7839     1981/6/9     2450.00          10
7839     KING     PRESIDENT            1981/11/17       5000.00          10
7934     MILLER     CLERK     7782     1982/1/23      1300.00          10

2.使用connect_by_root,显示名字和薪水,如果有下属,那么还显示上司的名字和下属薪水的组合

SELECT CONNECT_BY_ROOT t.ename as name , t.sal
FROM emp t
WHERE t.deptno = 10
CONNECT BY PRIOR t.empno = t.mgr;

 NAME         SAL
MILLER     1300.00
CLARK      2450.00
CLARK      1300.00
KING        5000.00
KING        2450.00
KING        1300.00

3.下面我就可以利用上面的铺垫查询每个人管理的组(他们团队的平均薪水了)

SELECT name ,avg(sal)
FROM
    (SELECT CONNECT_BY_ROOT t.ename as name, t.sal
     FROM emp t
     WHERE t.deptno = 10
     CONNECT BY PRIOR t.empno = t.mgr
    )
GROUP BY name ;

NAME     AVG(SAL)
MILLER     1300                                    --他是最底层的码农,没有下属
CLARK      1875                                    --他管了一个人,那个码农,平均薪水(2450 + 1300) / 2
KING        2916.66666666667                --他是部门10的boss,两个下属
阅读(690) | 评论(0) | 转发(0) |
0

上一篇:没有了

下一篇:没有了

给主人留下些什么吧!~~