数据库Oracle的子查询练习

1.写一个查询显示与 Zlotkey 的 在同一部门的雇员的 last name和 hire date,结果中不包括 Zlotkey

--1.写一个查询显示与 Zlotkey 的 在同一部门的雇员的 last name和 hire date,结果中不包括 Zlotkey
select e.department_id from employees e where e.last_name='Zlotkey';

select e.last_name,e.hire_date
from employees e
where e.last_name <> 'Zlotkey'
and e.department_id=(select e.department_id from employees e where e.last_name='Zlotkey');

 

 

 

2.查询每个部门的平均薪水等级

--查询每个部门的平均薪水等级
select e.avgs,gra.gra,e.did
from job_grades gra,(select avg(e.salary) as avgs,e.department_id as did from employees e  where e.department_id is not null group by e.department_id) e
where e.avgs between gra.lowest_sal and gra.highest_sal;

 

3.创建一个查询显示所有其薪水高于平均薪水的雇员的雇员号和名字。按薪水的升序排序。

--创建一个查询显示所有其薪水高于平均薪水的雇员的雇员号和名字。按薪水的升序排序。
select avg(e.salary) from employees e;

select e.salary,e.last_name,e.employee_id
from employees e
where e.salary>(select avg(e.salary) from employees e);

 

4.写一个查询显示所有工作在有任一雇员的名字中包含一个u的部门的雇员的雇员号和名字。

--写一个查询显示所有工作在有任一雇员的名字中包含一个u的部门的雇员的雇员号和名字。
select e.department_id from employees e where e.last_name like '%u%';

select e.last_name,e.employee_id
from employees e
where e.department_id in(select e.department_id from employees e where e.last_name like '%u%');

 

5.显示所有部门地点号 (department location ID )是1700的雇员的 last name 、department number和 job ID 。

--显示所有部门地点号 (department location ID )是1700的雇员的 last name 、department number和 job ID 。
select d.department_id from departments d where  d.location_id=1700;

select e.last_name,e.department_id,e.job_id
from employees e
where e.department_id in(select d.department_id from departments d where  d.location_id=1700);

 

6.显示每个向 King 报告的雇员的名字和薪水.

--显示每个向 King 报告的雇员的名字和薪水.
select e.employee_id from employees e where e.last_name='King';

select e.last_name,e.salary
from employees e
where e.manager_id in(select e.employee_id from employees e where e.last_name='King');

 

7.显 示 在 Executive 部 门 的 每 个 雇 员 的 department,number 、last name 和 job ID 。

--显 示 在 Executive 部 门 的 每 个 雇 员 的 department,number 、last name 和 job ID 。
select d.department_id from departments d where d.department_name='Executive';

select e.employee_id,e.last_name,e.job_id
from employees e
where e.department_id=(select d.department_id from departments d where d.department_name='Executive');

 

8.查询显示所有收入高于平均薪水并且工作在有任一雇员的名个字中带有一个u的部门的雇员的 employee numbers、last_names 和salaries 。

--查询显示所有收入高于平均薪水并且工作在有任一雇员的名个字中带有一个u的部门的雇员的 employee numbers、last_names 和salaries 。
select avg(e.salary) from employees e;
select e.department_id from employees e where e.last_name like '%u%';

select es.employee_id,es.last_name,es.salary
from employees es
where es.salary>(select avg(e.salary) from employees e)
and es.department_id in(select e.department_id from employees e where e.last_name like '%u%');

 

8.显示那些 job ID 与雇员 141 相同的雇员的名字与 job ID。

--显示那些 job ID 与雇员 141 相同的雇员的名字与 job ID。
select e.job_id from employees e where  e.employee_id=141;

select e.last_name,e.job_id
from employees e
where e.job_id=(select e.job_id from employees e where  e.employee_id=141);

 

9.显示 job ID与雇员 141 相同,并且薪水高于雇员 143 的那些雇员。

--显示 job ID与雇员 141 相同,并且薪水高于雇员 143 的那些雇员。
select e.job_id from employees e where e.employee_id=141
select es.salary from employees es where es.employee_id=143;

select ee.salary,ee.last_name
from employees ee
where ee.job_id=(select e.job_id from employees e where e.employee_id=141)
and ee.salary>(select es.salary from employees es where es.employee_id=143);

 

 

10.显示所有其最低薪水大于 部门 50 的最低薪水的部门号和最低薪水。

--显示所有其最低薪水大于 部门 50 的最低薪水的部门号和最低薪水。
select min(e.salary)  from employees e where e.department_id=50;

select min(ee.salary),ee.department_id
from employees ee
where ee.department_id is not null
group by ee.department_id
having min(ee.salary)>(select min(e.salary)  from employees e where e.department_id=50)
order by ee.department_id;

 

11.显示工作岗位不是 IT_PROG 的雇员,并且这些雇员的的薪水少于 IT_PROG 工作岗位的雇员的 ID、名字、工作岗位和薪水。

--显示工作岗位不是 IT_PROG 的雇员,并且这些雇员的的薪水少于 IT_PROG 工作岗位的雇员的 ID、名字、工作岗位和薪水。

select e.salary from employees e where e.job_id='IT_PROG';

select e.employee_id,e.last_name,e.job_id,e.salary
from employees e
where e.job_id <> 'IT_PROG'
and e.salary<any(select e.salary from employees e where e.job_id='IT_PROG')

 

<ALL 意思是小于最小值。>ALL 意思是大于最大值。


ANY 与 ALL 的区别:
ANY: >ANY 表示至少大于一个值,即大于最小值。
ALL: >ALL 表示大于每一个值,既大于最大值。

 

 

 

 

 

 

 

 

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值