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



例子:

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

//查Simth的工资

select last_name,salary 

from s_emp

where lower(last_name)=’smith’;

//查询工资比Simth工资高的员工信息

select last_name,salary

from s_emp 

where salary>(

select salary 

from s_emp

where lower(last_name)=’smith’

);



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

//41号部门的平均工资

select dept_id,avg(salary)

from s_emp

group by dept_id

having dept_id=41;



//平均工资比41号部门高的部门

select dept_id,avg(salary)

from s_emp

group by dept_id

having avg(salary)>(

select avg(salary)

from s_emp

group by dept_id

having dept_id=41

);



//这些部门中的员工信息

select last_name,salary

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

group by dept_id

having dept_id=41

)

);





3.查询平均工资比41号部门的平均工资高的部门中

员工的信息,并且显示出当前部门的平均工资,同时显

示出部门的名字




//41号部门的平均工资

select avg(salary)

from s_emp

where dept_id=41;



//平均工资比41号部门的平均工资高的部门

select dept_id,avg(salary)

from s_emp

group by dept_id

having avg(salary)>(

select avg(salary)

from s_emp

where dept_id=41

);



//当前部门的平均工资

select avg(salary)

from s_emp

group by dept_id;



select s1.last_name,s1.salary,temp.avgsal,sd.name

from s_emp s1,(

select avg(salary) avgsal,dept_id

from s_emp

group by dept_id

)temp,s_dept sd

where s1.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

)

) and temp.dept_id=s1.dept_id

and s1.dept_id=sd.id;



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

 同时显示部门的名称以及所在地区




//每个部门的平均工资

select dept_id,avg(salary)

from s_emp

group by dept_id;



//比自己所在部门工资高的员工

select s1.last_name,s1.salary,s1.dept_id,temp.avgsal

from s_emp s1,(

select dept_id,avg(salary) avgsal

from s_emp

group by dept_id

)temp

where s1.dept_id=temp.dept_id

and s1.salary>temp.avgsal;



//显示名称和区域

select s1.last_name,s1.salary,s1.dept_id,temp.avgsal,sd.name,sr.name

from s_emp s1,(

select dept_id,avg(salary) avgsal

from s_emp

group by dept_id

)temp,s_dept sd,s_region sr

where s1.dept_id=temp.dept_id

and s1.salary>temp.avgsal

and sd.region_id=sr.id

and s1.dept_id=sd.id;



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

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

 门的平均工资要高,显示当前部门的平均工资以及部门的

 名字和所在地区




//Ngao所在部门

select last_name,dept_id

from s_emp

where last_name=’Ngao’;



//Ngao所在部门部门平均工资

select avg(salary)

from s_emp

where dept_id=(

select dept_id

from s_emp

where last_name=’Ngao’

);



//平均工资比Ngao所在部门部门平均工资高的部门


select dept_id

from s_emp 

group by dept_id

having avg(salary)>(

select avg(salary)

from s_emp

where dept_id=(

select dept_id

from s_emp

where last_name=’Ngao’

)

);





//

select s1.id,s1.last_name,s1.dept_id,temp.avgsal,sd.name,sr.name

from s_emp s1,(

select dept_id,avg(salary) avgsal

from s_emp

group by dept_id

)temp,s_dept sd,s_region sr

where s1.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=(

select dept_id

from s_emp

where last_name=’Ngao’

)

)

) and temp.avgsal>(

select avg(salary)

from s_emp

where dept_id=(

select dept_id

from s_emp

where last_name=’Ngao’

)

) and s1.dept_id=temp.dept_id

and sd.region_id=sr.id

and s1.dept_id=sd.id;














版权声明:本文为lucy_lilu原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/lucy_lilu/article/details/79079421