[SQL99]数据库基本操作练习题(一)

版权声明:转载或者引用本文内容请注明来源及原作者 https://blog.csdn.net/a755199443/article/details/88562453

使用的所有数据为Oracle数据库scott账户预置的四张表.
完成如下的SQL语句练习:
  1. 每个员工的所有信息
  2. 每个人的部门编号,姓名,薪水
  3. 每个人的年薪
  4. 求每个人的年薪,列的别名:“年薪”
  5. 求 10 这个部门的所有员工
  6. 求名字是 KING 的这个人的信息
  7. 求薪水大于 2000 的员工信息
  8. 求部门不是 10 的员工信息
  9. 求薪水在 800 和 1500 之间的员工信息(包含 800 和 1500)
  10. 列出 deptno 为 10 或者 30,并且工资>2000 的所有人
  11. 利用 in 操作符,列出部门 10 和 20 的人员
  12. 利用 like 操作符,查处名字中含有"H"的人员
  13. 分别利用 like 操作符和正则表达式,查处名字中含有"S"或者"M"的人员
  14. 计算 emp 表中的所有人员的平均薪水
  15. 计算 emp 表中最高薪水
  16. 计算 emp 表中最低薪水
  17. 计算 emp 表中薪水大于 1000 的人员的个数
  18. 计算 emp 表中薪水的总和
  19. 计算 emp 表中薪水和津贴的总和
  20. 求各部门最高薪水
  21. 按照部门和职位分组,分别求最高薪水,该组人员个数
  22. 求薪水最高的员工姓名
  23. 求平均薪水是 2000 以上的部门
  24. 求每个部门的平均薪水,并按照薪水降序排列
  25. 求每个部门薪水在 1200 以上的雇员的平均薪水、最高薪水,并且分组结果
  中只包含平均薪水大于 1500 的部门,排序按照部门平均薪水倒序排列
  26. 把雇员按部门分组, 求最高薪水, 部门号, 过滤掉名字中第二个字母是’A’的, 要
  求分组后的平均薪水>1500, 按照部门编号倒序排列
  27. 求平均薪水最高的部门的部门编号
  28. 求出 emp 表中哪些人是经理人,打印出名字和编号
  29. 求比普通员工的最高薪水还要高的经理人名称
  30. 每个部门平均薪水的等级(需要用到表的连接)
  31. 求部门经理人中平均薪水最低的部门名称
  32. 求薪水最高的前 5 名雇员
  33. 求薪水最高的第 6 到第 10 名雇员

答:
–1
select * from emp;
–2
select deptno,ename,sal from emp;
–3
select ename,sal12 年薪 from emp;
–4
select ename,sal
12 年薪 from emp;
–5
select * from emp where deptno=10;
–6
select * from emp where ename=‘KING’;
–7
select * from emp where sal>2000;
–8
select * from emp where deptno<>10;
–9
select * from emp where sal between 800 and 1500;
–10
select * from emp where deptno in (10,30) and sal >2000;
–11
select * from emp where deptno in (10,20);
–12
select * from emp where ename like ‘%H%’;
–13
select * from emp where ename like ‘%S%’ union select * from emp where ename like ‘%M%’;
–14
select avg(sal) from emp;
–15
select max(sal) from emp;
–16
select min(sal) from emp;
–17
select count() from emp where sal>1000;
–18
select sum(sal) from emp;
–19
select sum(sal)+sum(comm) from emp;
–20
select deptno,max(sal) from emp group by deptno;
–21
select deptno,job,max(sal),count(
) from emp group by deptno,job;
–22
select ename,sal from emp where sal=(select max(sal) from emp);
–23
select deptno, avg(sal) from emp group by deptno having avg(sal)>2000;
–24
select deptno,avg(sal) from emp group by deptno order by avg(sal) desc;
–25
select deptno,avg(sal) from emp where sal>1200 group by deptno having avg(sal)>1500 order by avg(sal) desc;
–26
select deptno,max(sal)
from emp
where ename not like ‘_A%’
group by deptno
having avg(sal)>1500
order by deptno desc;
–27
select deptno,avg(sal) from emp group by deptno having avg(sal)=(select max(avg(sal)) from emp group by deptno);
–28
select empno,ename,mgr from emp where mgr in (se)
–29
select * from emp;
select ename,sal,job
from emp
where job=‘MANAGER’ and sal>=(select max(sal) from emp where job=‘CLERK’);
–30
select t.deptno,t.avg_sal,s.grade
from salgrade s
join(select deptno,avg(sal) avg_sal from emp group by deptno) t
on t.avg_sal between s.losal and s.hisal
order by deptno;
–31这题有点歧义
若经理人指职业为经理,则
select dname,deptno
from dept
where deptno=
(select deptno
from
(select deptno,avg(sal) avg_sal
from emp
where job=‘MANAGER’
group by deptno
order by avg_sal)
where rownum=1)
若经理人指emp表中占有mgr编号的领导,则:
select dname
from dept
where deptno=
(select deptno from
(select deptno,avg(sal) avg_sal from emp
where empno in(select mgr from emp)
group by deptno order by avg_sal)
where rownum=1)
–32
select t.,rownum
from (select rownum ename, sal from emp order by sal desc) t where rownum<=5;
–33
select ename,sal ,rn,rownum
from (
select t1.
,rownum
from (
select rownum rn,ename,sal
from emp order by sal desc
) t1
) t2
where rn>5 and rn<=10;

猜你喜欢

转载自blog.csdn.net/a755199443/article/details/88562453