日期:2014-05-16  浏览次数:20422 次

Oracle学习笔记4--稍复杂的查询和分页

仍然使用SCOTT用户来操作:

1、???????? 显示工资比部门30的所有员工的工资都高的员工的信息:

Select * from emp where sal>all(select sal from emp where deptno=30);

2、???????? 显示工资比部门30的任意一个员工的工资高就可以的员工的信息:

Select * from emp where sal>any(select sal from emp where deptno=30);

其实,换种方法也是可以的:

Select * from emp where sal>(select min(sal) from emp where deptno=30);

3、???????? 找出和SMITH的部门号、工作都相同的员工的信息:

Select * from emp where (deptno,job)=(Select deptno,job from emp where ename=’SMITH’);

4、???????? 如何显示高于自己部门平均工资的员工的信息

解决这个复杂一点的查询,我们可以这样考虑:

先找出每个部门的平均工资:

Select deptno,avg(sal) avg_sal from emp group by deptno;结果如下:

SQL> select deptno,avg(sal) avg_sal from emp group by deptno;

?

DEPTNO??? AVG_SAL

------ ----------