本文共 3638 字,大约阅读时间需要 12 分钟。
1:查看与CLARK相同职位的员工
select ename,job from emp_xiangyoulu where job=( select job from emp_xiangyoulu where ename='CLARK');2:查看低于公司平均工资的员工
select ename,sal from emp_xiangyoulu where sal<( select avg(sal) from emp_xiangyoulu); 3:查看与ALLEN同部门的员工 select ename,deptno from emp_xiangyoulu where deptno=( select deptno from emp_xiangyoulu where ename='ALLEN');4:查看平均工资低于20号部门平均工资的部门平均工资
select avg(sal),deptno from emp_xiangyoulu group by deptno having avg(sal)<( select avg(sal) from emp_xiangyoulu where deptno=20); select deptno,avg(sal) from emp_xiangyoulu group by deptno having avg(sal)<( select avg(sal) from emp_xiangyoulu group by deptno having deptno=20); 5:查看低于自己所在部门平均工资的员工 select e.ename,e.sal from emp_xiangyoulu e join (select avg(sal) avg_sal,deptno from emp_xiangyoulu group by deptno) m on e.deptno=m.deptno where e.sal<m.avg_sal;6:查看公司工资排名的第2-5名
select * from emp_xiangyoulu order by sal desc; select * from ( select rownum rn,e.* from( select ename,sal,deptno from emp_xiangyoulu order by sal desc) e) where rn between 2 and 5; select * from( select ename,sal,deptno from emp_xiangyoulu order by sal desc) where rownum<5;select * from(
select rownum rn,ename,sal from emp_xiangyoulu order by sal desc) where rn between 2 and 5;-->有问题,伪列的序号不是按照sal降序排列,而是提前生成好的; SELECT ROWNUM rn,e.* FROM ( SELECT * FROM emp_xiangyoulu ORDER BY sal desc) e WHERE rn BETWEEN 2 AND 5;--rn 标识符无效 select rownum,e.* from( select * from emp_xiangyoulu order by sal desc)e where rownum between 2 and 5;--无结果 select * from( select rownum rn,e.* from( select * from emp_xiangyoulu order by sal desc)e) where rn between 2 and 5; --查看公司工资排名的第6-10名 select * from( select rownum rn,e.* from( select * from emp_xiangyoulu order by sal desc)e) where rn between 6 and 10; --查看公司各部门薪资排名前两名的员工信息? select * from( select ename,sal,deptno,row_number() over (partition by deptno order by sal desc)rn from emp_xiangyoulu)e where e.rn<3;7:查看CLERK职位的人数和其他职位的总人数各多少?
select count(job) from emp_xiangyoulu where job='CLERK'; select count(1),decode( job,'CLERK','职员','其他职位')de from emp_xiangyoulu group by decode( job,'CLERK','职员','其他职位'); --统计10号,20部门以及其余别的的部门的员工人数; select count(1),decode( deptno,10,'10号部门',20,'20号部门','别的部门')de from emp_xiangyoulu group by decode( deptno,10,'10号部门',20,'20号部门','别的部门'); 8:查看每个职位的平均工资排名 select job,avg(sal) a_sal from emp_xiangyoulu group by job order by a_sal desc; 8.2:查看每个职位的员工工资排名 select ename,sal,job,row_number() over(partition by job order by sal desc)rn from emp_xiangyoulu;9:查看每个职位的工资排名,若工资一致,排名一致
select ename,sal,job,rank() over(partition by job order by sal desc)rn from emp_xiangyoulu;10:查看每个职位的工资排名,若工资一致,排名一致,不跳名次。
select ename,sal,job,dense_rank() over (partition by job order by sal desc)rn from emp_xiangyoulu;11:分别查看:同部门同职位,同职位,以及所有员工的工资总和
select deptno,job,sum(sal) from emp_xiangyoulu group by deptno,job;--结果不含工资总和; select deptno,job,sum(sal) from emp_xiangyoulu group by rollup(deptno,job);12:分别查看:同部门同职位,同职位,同部门以及所有员工的工资总和
select deptno,job,sum(sal) from emp_xiangyoulu group by cube(deptno,job);13:分别查看同部门同职位和同职位的员工的工资总和
14:查看公司最高工资的员工的名字以及所在部门名称 select e.ename,d.dname from emp_xiangyoulu e left outer join dept_xiangyoulu d on e.deptno=d.deptno where e.sal=(select max(sal) from emp_xiangyoulu); 15:查看每个部门的最高工资的员工名字 select e.ename,e.sal,e.deptno from emp_xiangyoulu e join( select max(sal) max_sal,deptno from emp_xiangyoulu group by deptno)d on e.deptno=d.deptno and e.sal=d.max_sal; 16:查看有下属的员工信息 select distinct m.* from emp_xiangyoulu e join emp_xiangyoulu m on e.mgr=m.empno; select * from emp_xiangyoulu where empno in( select m.empno from emp_xiangyoulu e join emp_xiangyoulu m on e.mgr=m.empno);转载地址:http://rgnp.baihongyu.com/