Oracle数据库-第六章:子查询(嵌套查询)

子查询,即一个select语句中嵌套了另外的一个或者多个select语句

 

例如:

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

第一步:查询Smith的工资数

select salary

from s_emp

where last_name='Smith';        

结果:

SALARY

----------

   940

 

第二步:查询工资比940高的员工信息

select last_name,salary

from s_emp

where salary>940;

 

第三步:把第二步中的数字940替换成第一步中的sql语句即可(注意格式)

select last_name,salary

from s_emp

where salary>(

select salary

from s_emp

where last_name='Smith'

);

 

 

例如:

查询所有部门的平均工资

select dept_id,avg(salary)

from s_emp

group by dept_id;

 

结果:

   DEPT_ID AVG(SALARY)

---------- -----------

42  1081.66667

43         900

34        1160

44        1050

31        1400

32        1490

35        1450

50        2025

41      1247.5

45        1089

33        1515

 

   DEPT_ID AVG(SALARY)

---------- -----------

10        1450

 

 

查询平均工资比1247.5高的部门编号

select dept_id

from s_emp

group by dept_id

having avg(salary)>1247.5;

 

结果:

   DEPT_ID

----------

31

32

35

50

33

10

 

 

查询平均工资比1247.5高的部门中员工信息

select last_name,salary,dept_id

from s_emp

where dept_id in(10,31,32,33,35,50);

 

等价于

 

select last_name,salary,dept_id

from s_emp

where dept_id in(

select dept_id

from s_emp

group by dept_id

having avg(salary)>1247.5

);

 

 

 

查询平均工资比 41号部门的平均工资 高 的部门中员工的信息

select avg(salary)

from s_emp

where dept_id=41;

 

结果:

AVG(SALARY)

-----------

 1247.5

 

所以这个sql语句和1247.5是等价的,那么就可以将上面sql语句中的1247.5给替换了

select last_name,salary,dept_id

from s_emp

where dept_id in(

select dept_id

from s_emp

group by dept_id

having avg(salary)>1247.5

);

替换后为:

select last_name,salary,dept_id

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

)

);

 

 

练习:

注意:(可以把子查询的结果作为一张表来使用)

查询平均工资比 41号部门的平均工资 高的部门中员工的信息,并且显示出当前部门的平均工资

 

查询平均工资比 41号部门的平均工资 高的部门中员工的信息,并且显示出当前部门的平均工资,同时显示出部门的名字

 

 

 

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

 

查询员工信息,这些员工的工资要比自己所在部门的平均工资高,同时显示部门的名称以及所在地区

 

 

 

查询工资比 Ngao所在部门平均工资 要高的员工信息,

同时这个员工所在部门的平均工资 也要 比Ngao所在部门的平均工资要高

 

查询工资比 Ngao所在部门平均工资 要高的员工信息,同时这个员工所在部门的平均工资 也要 比Ngao所在部门的平均工资要高,显示当前部门的平均工资

 

查询工资比 Ngao所在部门平均工资 要高的员工信息,同时这个员工所在部门的平均工资 也要 比Ngao所在部门的平均工资要高,显示当前部门的平均工资以及部门的名字和所在地区

猜你喜欢

转载自blog.csdn.net/qq_45065517/article/details/107505103
今日推荐