–1、列出至少有一个雇员的所有部门信息select * from dept where deptnoin(select deptno from emp group by deptno having count(deptno)>1); 2、列出薪金(工资)比’SMITH’多的所有雇员信息select * from emp where sal>(select sal from emp where ename=‘SMITH’) 3、列出所有雇员的姓名及其上级的姓名select ename,(select ename from emp where empno=d.mgr) from emp d 4、列出入职日期(雇佣日期)早于其直接上级的所有雇员select * from emp d where hiredate>(select hiredate from emp where empno=d.mgr)- -5、列出部门名称和这些部门的雇员,同时列出那些没有雇员的部门select dname,ename from emp,dept where emp.deptno=dept.deptnoselect dname from dept where deptno not in (select emp.deptno from emp) –6、列出所有’CLERK’(办事员)的姓名及其部门名称select ename,dname from emp,dept where emp.deptno=dept.deptno and emp.job=‘CLERK’– 7、列出各种类别的最低薪金,并使最低薪金大于1500select min(sal) from emp where sal>1500 group by deptno- -8、列出从事sales(销售)工作的雇员的姓名,假定不知道销售部的部门编号select ename from emp,dept where dept.dname=‘SALES’ and emp.deptno=dept.deptno- -9、列出薪金高于公司平均水平的所有雇员信息select * from emp where sal>(select avg(sal) from emp)- -10、列出与"SCOTT"从事相同工作的所有雇员select * from emp where job=(select job from emp where ename=‘SCOTT’)- -11、列出薪金等于在部门30工作的雇员的所有姓名和薪金select ename,sal from emp where sal in (select sal from emp where deptno=30)- -12、列出薪金高于在部门30工作的所有雇员的姓名和薪金select ename,sal from emp where sal>(select max(sal) from emp where deptno=30)- -13、列出在每个部门工作的雇员的数量以及其他信息select dname,count() from emp,dept where emp.deptno=dept.deptno group by dname- -14、列出所有雇员的姓名、部门名称和薪金select ename,dname,sal from emp,dept where emp.deptno=dept.deptno- -15、列出从事同一种工作但属于不同的部门的雇员的不同组合select s. from emp s,emp d where s.deptno<>d.deptno and s.job=d.job–16、列出分配有雇员数量的所有部门的详细信息,即使分配有零个雇员select * from dept where deptno in (select deptno from emp)–17、列出各种类别工作的最低工资select min(sal) from emp group by deptno- -18、列出各个部门的MANAGER(经理)的最低薪金select min(sal) from emp where job=‘MANAGER’- -19、列出按计算字段的排序的所有雇员的年薪(计算字段指的是年薪)select ename,(sal+decode(comm,null,0,comm))12 as 年薪 from emp –20、列出薪金水平处于第四位的雇员信息select * from (select rownum as f,emp. from emp where rownum<=4 order by sal desc) e where f>3 –21、显示所有雇员的姓名和加入公司的年份和月份,按雇员受雇日所在月排序,并将最前年份的排在最前面select ename,extract(year from hiredate) as years,extract(month from hiredate) as monthss from emp order by years asc,monthss –22、显示在一个月为30天的情况下所有雇员的日薪金,忽略余数select round(sal/30) from emp –23、找出在(任何年份的)2月受聘的所有雇员select * from emp where to_char(hiredate,‘mm’)=2;- -24、对于每个雇员,显示其加入公司的天数select ename,FLOOR(sysdate-hiredate) from emp;- -25、显示姓名字段的任何位置包含"A"的所有雇员的姓名select ename from emp where ename like ‘%A%’;- -26、以年、月和日显示所有雇员的服务年限select ename,trunc(months_between(sysdate,hiredate)/12)年,trunc(mod((months_between(sysdate,hiredate)),12))月,trunc(sysdate-add_months(hiredate,months_between(sysdate,hiredate)))日from emp;
用的表和数据是oracle自带的数据