oracle_day 4子查询

第一种方式

1.查询工资比Smith 工资高的员工信息

(1)查询Smith的工资

select salary

from s_emp

where last_name = 'Smith';

(2)比较

select *

from s_emp

where salary >940;

(3)合并

select*

from s_emp

where  salary >(

      select salary

      from s_emp

      where last_name = 'Smith'

      );

2.查询与Ngao所在部门是同一个部门的员工

(1)查询Ngao所在的部门

select dept_id

 from s_emp

where last_name = 'Ngao';

(2)查询部门为41的员工

select last_name

from s_emp

where dept_id =41;

(3)合并

select last_name

from s_emp

where dept_id =(

                   select dept_id

                   from s_emp

                   where last_name = 'Ngao'

      );

第二种方式

1. 查询员工信息,这些员工比自己所在部门平均工资要高

(1)求所有部门的平均工资

select dept_id,avg(salary)

from s_emp

group by dept_id;

(2)求员工的的工资比自己所在部门的平均工资高的

select emp.last_name,emp.salary,ss.dept_id,ss.sa

from s_emp

emp,(select dept_id,avg(salary) sa

                   from s_emp

                   group by dept_id)  ss

where emp.dept_id = ss.dept_id;

2. 求满足条件的员工所在部门的平均工资

select dept_id,avg(salary)

from s_emp

group by dept_id;

合并

select sa.last_name,sa.salary

from (select dept_id,avg(salary)

  from s_emp

  group by dept_id)  ss,(  select  *

  from s_emp

  where dept_id in(

    select  dept_id

    from s_emp

    group by dept_id

    having avg(salary) > (

      select avg(salary)

      from s_emp

      where dept_id = 41

    )

  )) sa

where sa.dept_id =ss.dept_id;

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、等值连接 1.查询员工的名字、部门编号、部门名字 select emp.last_name,dept.id,d...
    372_11f0阅读 214评论 0 0
  • 1. 了解SQL 1.1 数据库基础 ​ 学习到目前这个阶段,我们就需要以某种方式与数据库打交道。在深入学习MyS...
    锋享前端阅读 1,139评论 0 1
  • 1.简介 数据存储有哪些方式?电子表格,纸质文件,数据库。 那么究竟什么是关系型数据库? 目前对数据库的分类主要是...
    乔震阅读 1,796评论 0 2
  • ORACLE自学教程 --create tabletestone ( id number, --序号usernam...
    落叶寂聊阅读 1,138评论 0 0
  • 我的理解,心理表征,其实就是对某件事的心理预期,或者对某个场景的想象,想象自己经历了那个即将到来的场景,想象自己做...
    周国华阅读 615评论 0 1