oracle--子查询--bai

Posted Ipeter

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle--子查询--bai相关的知识,希望对你有一定的参考价值。

-- 1 创建视图 show_max_sal_name_view 显示工资最高的员工姓名及他的工资 
create or replace view show_max_sal_name_view as
select ename,sal from scott.emp where sal=(select max(sal) from scott.emp);

select * from show_max_sal_name_view;
--2 创建视图 show_min_sal_dname 显示平均工资最低的部门的部门名及平均工资
    --先按部门统计平均工资
    select deptno,avg(sal) from scott.emp group by deptno;
    --获得最低的平均工资
    select min(avg(sal))from scott.emp group by deptno;
    --获得最低平均工资及其部门号
    select * from
    (select deptno,avg(sal) 平均工资 from scott.emp  group by deptno) t
    where t.平均工资 = 
    (select min(avg(sal)) from scott.emp group by deptno);
    --获得最低平均工资及其部门名  创建视图
    create or replace view show_min_sal_dname as
    select * from
    (select deptno,avg(sal) 平均工资 from scott.emp  group by deptno) t
    where t.平均工资 = 
    (select min(avg(sal)) from scott.emp group by deptno);
    
--3 创建视图 show_leader_name 显示所有员工的名字和他们上级领导名。 (难)
     --使用mgr字段进行emp表的“自关联”
     select e1.ename as 员工名字,e2.ename as 领导名字 from scott.emp e1,scott.emp e2
     where e1.mgr=e2.empno 
     union
     select ename,‘无领导‘from scott.emp where mgr is null;

=========================================================================================================

-- 把空替换成0
  update scott.emp set comm = ‘0‘ where comm is null;
  --查出下级比上级 工资+奖金 高的员工编号,员工姓名
  create view show_higher_empee as 
  select * from(
  select e1.empno,e1.ename as 本人姓名,e2.ename as 领导姓名,e1.sal+nvl(e1.comm,‘0‘) as 本人总收入,
  e2.sal+nvl(e2.comm,‘0‘) as 领导总收入
    from scott.emp e1,scott.emp e2 where e1.mgr=e2.empno
    ) where 本人总收入>领导总收入;
  
      --采用join连接
      
      select * from
      (
      select e1.empno,e1.ename as 本人姓名,e2.ename as 领导姓名,
      e1.sal+nvl(e1.comm,‘0‘) as 本人总收入,
      e2.sal+nvl(e2.comm,‘0‘) as 领导总收入
      from scott.emp e1 inner join scott.emp e2 on e1.mgr=e2.empno
      )
      where 本人总收入>领导总收入;
      
  
  select * from show_higher_empee;

  

以上是关于oracle--子查询--bai的主要内容,如果未能解决你的问题,请参考以下文章

oracle--存储过程--bai

oracle--第一天PLSQL--bai

oracle 递归 通过子节点查询根节点

oracle--第一天议--bai

Oracle 11g 子查询中缺少表达式

Oracle SQL - 多级相关子查询不起作用