1. 列出至少有一个雇员的所有部门。
|
1
|
select
*
from
dept
where
deptno
in
(
select
deptno
from
emp
group
by
deptno
having
count
(*)>0)
|
2. 列出薪金比“SMITH”多的所有雇员。
|
1
|
select
*
from
emp
where
sal>(
select
sal
from
emp
where
ename=
'SMITH'
)
|
3. 列出所有雇员的姓名及其上级的姓名。
|
1
|
select
a.ename,b.ename
from
emp a,emp b
where
a.mgr=b.empno
|
4. 列出入职日期早于其直接上级的所有雇员。
|
1
|
select
ename
from
emp a
where
hiredate<(
select
hiredate
from
emp
where
empno=a.mgr)
|
5. 列出部门名称和这些部门的雇员,同时列出那些没有雇员的部门。
|
1
|
select
dname,ename
from
dept a,emp b
where
a.deptno=b.deptno(+)
|
6. 列出所有“CLERK”(办事员)的姓名及其部门名称。
|
1
|
select
dname,ename
from
dept a,emp b
where
a.deptno=b.deptno
and
job=
'CLERK'
|
7. 列出各种类别的最低薪金,以使最低薪金等于 1500。
|
1
2
3
|
update
emp
set
sal=1500
where
empno
in
(
select
empno
from
emp
where
(job,sal)
in
(
select
job,
min
(sal)
from
emp
group
by
job
having
min
(sal)<1500))
|
8. 列出从事“SALES”(销售)工作的雇员的姓名,假定不知道销售部的部门编号。
|
1
|
select
ename
from
emp
where
deptno=(
select
deptno
from
dept
where
dname=
'SALES'
)
|
9. 列出薪金高于公司平均水平的所有雇员。
|
1
|
select
ename
from
emp
where
sal>(
select
avg
(sal)
from
emp)
|
10. 列出与“SMITH”从事相同工作的所有雇员。
|
1
|
select
*
from
emp
where
job=(
select
job
from
emp
where
ename=
'SMITH'
)
|
11. 列出薪金等于给予在部门 30 工作的雇员的薪金的所有雇员。
|
1
|
select
*
from
emp
where
sal
in
(
select
sal
from
emp
where
deptno=30)
|
12. 列出薪金高于在部门 30 工作的所有雇员的薪金的所有雇员。
|
1
|
select
*
from
emp
where
sal>
all
(
select
sal
from
emp
where
deptno=30)
|
13. 列出在每个部门工作的雇员的数量以及其他信息。
|
1
|
select
dept.*,t.
count
from
dept, (
select
deptno,
count
(*)
count
from
emp
group
by
deptno) t
where
dept.deptno=t.deptno
|
14. 列出所有雇员的雇员名称、部门名称和薪金。
|
1
|
select
ename,dname,sal
from
emp,dept
where
emp.deptno=dept.deptno
|
15. 列出从事同一种工作但属于不同部门的雇员的不同组合。
|
1
|
select
a.ename,b.ename,a.job,a.deptno,b.deptno
from
emp a,emp b
where
a.job=b.job
and
a.deptno!=b.deptno
|
16. 列出分配有雇员数量的所有部门的详细信息,即使是分配有 0 个雇员。
|
1
2
3
|
select
dept.deptno,dname,loc,
count
(empno)
from
dept,emp
where
dept.deptno=emp.deptno(+)
group
by
dept.deptno,dname,loc
order
by
dept.deptno
|
17. 列出各种类别工作的最低工资。
|
1
|
select
job,
min
(sal+nvl(comm,0))
from
emp
group
by
job;
|
18. 列出各个部门的 MANAGER(经理)的最低薪金。
|
1
|
select
deptno,
min
(sal)
from
emp
where
job=
'MANAGER'
group
by
deptno
|
19. 列出按计算的字段升序排序的所有雇员的年薪。
|
1
|
select
ename,sal*12 年薪
from
emp
order
by
年薪
ASC
|
20. 列出薪金水平处于第四位的雇员。
|
1
|
lect *
from
(
select
rownum num,empno,ename
from
emp
order
by
sal)
where
num=4
|
1. 列出至少有一个雇员的所有部门。
|
1
|
select
*
from
dept
where
deptno
in
(
select
deptno
from
emp
group
by
deptno
having
count
(*)>0)
|
2. 列出薪金比“SMITH”多的所有雇员。
|
1
|
select
*
from
emp
where
sal>(
select
sal
from
emp
where
ename=
'SMITH'
)
|
3. 列出所有雇员的姓名及其上级的姓名。
|
1
|
select
a.ename,b.ename
from
emp a,emp b
where
a.mgr=b.empno
|
4. 列出入职日期早于其直接上级的所有雇员。
|
1
|
select
ename
from
emp a
where
hiredate<(
select
hiredate
from
emp
where
empno=a.mgr)
|
5. 列出部门名称和这些部门的雇员,同时列出那些没有雇员的部门。
|
1
|
select
dname,ename
from
dept a,emp b
where
a.deptno=b.deptno(+)
|
6. 列出所有“CLERK”(办事员)的姓名及其部门名称。
|
1
|
select
dname,ename
from
dept a,emp b
where
a.deptno=b.deptno
and
job=
'CLERK'
|
7. 列出各种类别的最低薪金,以使最低薪金等于 1500。
|
1
2
3
|
update
emp
set
sal=1500
where
empno
in
(
select
empno
from
emp
where
(job,sal)
in
(
select
job,
min
(sal)
from
emp
group
by
job
having
min
(sal)<1500))
|
8. 列出从事“SALES”(销售)工作的雇员的姓名,假定不知道销售部的部门编号。
|
1
|
select
ename
from
emp
where
deptno=(
select
deptno
from
dept
where
dname=
'SALES'
)
|
9. 列出薪金高于公司平均水平的所有雇员。
|
1
|
select
ename
from
emp
where
sal>(
select
avg
(sal)
from
emp)
|
10. 列出与“SMITH”从事相同工作的所有雇员。
|
1
|
select
*
from
emp
where
job=(
select
job
from
emp
where
ename=
'SMITH'
)
|
11. 列出薪金等于给予在部门 30 工作的雇员的薪金的所有雇员。
|
1
|
select
*
from
emp
where
sal
in
(
select
sal
from
emp
where
deptno=30)
|
12. 列出薪金高于在部门 30 工作的所有雇员的薪金的所有雇员。
|
1
|
select
*
from
emp
where
sal>
all
(
select
sal
from
emp
where
deptno=30)
|
13. 列出在每个部门工作的雇员的数量以及其他信息。
|
1
|
select
dept.*,t.
count
from
dept, (
select
deptno,
count
(*)
count
from
emp
group
by
deptno) t
where
dept.deptno=t.deptno
|
14. 列出所有雇员的雇员名称、部门名称和薪金。
|
1
|
select
ename,dname,sal
from
emp,dept
where
emp.deptno=dept.deptno
|
15. 列出从事同一种工作但属于不同部门的雇员的不同组合。
|
1
|
select
a.ename,b.ename,a.job,a.deptno,b.deptno
from
emp a,emp b
where
a.job=b.job
and
a.deptno!=b.deptno
|
16. 列出分配有雇员数量的所有部门的详细信息,即使是分配有 0 个雇员。
|
1
2
3
|
select
dept.deptno,dname,loc,
count
(empno)
from
dept,emp
where
dept.deptno=emp.deptno(+)
group
by
dept.deptno,dname,loc
order
by
dept.deptno
|
17. 列出各种类别工作的最低工资。
|
1
|
select
job,
min
(sal+nvl(comm,0))
from
emp
group
by
job;
|
18. 列出各个部门的 MANAGER(经理)的最低薪金。
|
1
|
select
deptno,
min
(sal)
from
emp
where
job=
'MANAGER'
group
by
deptno
|
19. 列出按计算的字段升序排序的所有雇员的年薪。
|
1
|
select
ename,sal*12 年薪
from
emp
order
by
年薪
ASC
|
20. 列出薪金水平处于第四位的雇员。
|
1
|
lect *
from
(
select
rownum num,empno,ename
from
emp
order
by
sal)
where
num=4
|
本文转自stock0991 51CTO博客,原文链接:http://blog.51cto.com/qing0991/1597907,如需转载请自行联系原作者