一、
目录
- 显示在1981-5-1到1982-12-31之间聘用的员工的姓名、工作,并按聘用日期对查询进行升序排序。
答案:
select ename,job from emp where hiredate between to_date('1981-05-01','yyyy-mm-dd') and to_date('1982-12-31','yyyy-mm-dd') order by hiredate asc;
- 按姓名的字母顺序降序显示部门10和30中的所有的员工的姓名和部门编号。
答案:
select ename,deptno from emp where deptno in (10,30) order by ename desc;
- 显示员工姓名中第三个字母为”A”的员工信息;
答案:select * from emp where ename like '__A%';
- 显示员工姓名中有”A”和”C”的员工的信息。
答案:select * from emp where ename like '%A%' and ename like '%C%'
- 显示工作为销售员或经理且工资不等于1500和2450的员工的姓名、工作和工资。
答案:
select ename,job,sal from emp where job='SALESMAN' or job='MANAGER' and sal!=1500 and sal!=2450;
- 显示提成比工资的一半多的员工的信息。
答案:select * from emp where sal/2<nvl(comm,0);
附:
- 查询第二行到第三行员工的信息。
答案:select * from (select rownum "行",ename,sal,empno,job,mgr,hiredate,comm,deptno from emp where rownum<=3)where "行">=2;
- 按姓氏升序查找员工,显示员工的姓名,名称,工作。
答案:select rownum,ename,job,sal from (select * from emp order by ename asc);
二、
- 求出部门平均薪水大于2000的部门编号
答案: select deptno,avg(sal) from emp
group by deptno
having avg(sal)>2000;
- 求出部门中人数在3个以上的部门的人数及总工资
答案:select deptno,sum(sal),count(*) from emp
group by deptno
having count(*)>3;
- 求出部门中在1981年以后入职的总人数及其平均工资在2000元以上的部门的人数、平均工资和部门编号。
答案:select count(*),avg(sal),deptno from emp
where hiredate>to_date('1981-12-30','yyyy-mm-dd')
group by deptno
having avg(sal)>2000;
- 找出部门中最高薪水在3000元以上的部门编号及该部门的平均薪水。
答案:select deptno,avg(sal) from emp
group by deptno
having max(sal)>3000;
- 显示平均薪水最高的部门的编号及薪水值。
答案:select deptno,avg(sal) from emp
group by deptno
having avg(sal)=(select max(avgsal) maxsal from
(select deptno,avg(sal) avgsal from emp
group by deptno))
- 从emp表中取出所有薪水值大于1200员的雇员,并按部门分组,然后求出该部门的平均薪水,再显示出该部门的平均薪水大于2000的部门,最后按降序排列;
答案:select deptno,avg(sal) from emp
where sal>1200
group by deptno
having avg(sal)>2000
order by avg(sal) desc
- 根据雇员的工资,求出雇员的工资等级
答案:select ename,sal,grade from emp,salgrade
where sal between losal and hisal