博客
关于我
《Oracle总结 04》--较为复杂的业务查询
阅读量:221 次
发布时间:2019-02-28

本文共 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/

你可能感兴趣的文章
NIFI1.21.0_NIFI和hadoop蹦了_200G集群磁盘又满了_Jps看不到进程了_Unable to write in /tmp. Aborting----大数据之Nifi工作笔记0052
查看>>
NIFI1.21.0_Postgresql和Mysql同时指定库_指定多表_全量同步到Mysql数据库以及Hbase数据库中---大数据之Nifi工作笔记0060
查看>>
NIFI1.21.0最新版本安装_连接phoenix_单机版_Https登录_什么都没改换了最新版本的NIFI可以连接了_气人_实现插入数据到Hbase_实际操作---大数据之Nifi工作笔记0050
查看>>
NIFI1.21.0最新版本安装_配置使用HTTP登录_默认是用HTTPS登录的_Https登录需要输入用户名密码_HTTP不需要---大数据之Nifi工作笔记0051
查看>>
NIFI1.21.0通过Postgresql11的CDC逻辑复制槽实现_指定表多表增量同步_增删改数据分发及删除数据实时同步_通过分页解决变更记录过大问题_02----大数据之Nifi工作笔记0054
查看>>
NIFI1.21.0通过Postgresql11的CDC逻辑复制槽实现_指定表多表增量同步_增加修改实时同步_使用JsonPath及自定义Python脚本_03---大数据之Nifi工作笔记0055
查看>>
NIFI1.21.0通过Postgresql11的CDC逻辑复制槽实现_指定表多表增量同步_插入修改删除增量数据实时同步_通过分页解决变更记录过大问题_01----大数据之Nifi工作笔记0053
查看>>
NIFI1.21.0通过Postgresql11的CDC逻辑复制槽实现_指定表或全表增量同步_实现指定整库同步_或指定数据表同步配置_04---大数据之Nifi工作笔记0056
查看>>
NIFI1.23.2_最新版_性能优化通用_技巧积累_使用NIFI表达式过滤表_随时更新---大数据之Nifi工作笔记0063
查看>>
NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_根据binlog实现update数据实时同步_实际操作05---大数据之Nifi工作笔记0044
查看>>
NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_根据binlog实现数据实时delete同步_实际操作04---大数据之Nifi工作笔记0043
查看>>
NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置binlog_使用处理器抓取binlog数据_实际操作01---大数据之Nifi工作笔记0040
查看>>
NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置数据路由_实现数据插入数据到目标数据库_实际操作03---大数据之Nifi工作笔记0042
查看>>
NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置数据路由_生成插入Sql语句_实际操作02---大数据之Nifi工作笔记0041
查看>>
NIFI从MySql中离线读取数据再导入到MySql中_03_来吧用NIFI实现_数据分页获取功能---大数据之Nifi工作笔记0038
查看>>
NIFI从MySql中离线读取数据再导入到MySql中_不带分页处理_01_QueryDatabaseTable获取数据_原0036---大数据之Nifi工作笔记0064
查看>>
NIFI从MySql中离线读取数据再导入到MySql中_无分页功能_02_转换数据_分割数据_提取JSON数据_替换拼接SQL_添加分页---大数据之Nifi工作笔记0037
查看>>
NIFI从Oracle11G同步数据到Mysql_亲测可用_解决数据重复_数据跟源表不一致的问题---大数据之Nifi工作笔记0065
查看>>
NIFI从PostGresql中离线读取数据再导入到MySql中_带有数据分页获取功能_不带分页不能用_NIFI资料太少了---大数据之Nifi工作笔记0039
查看>>
nifi使用过程-常见问题-以及入门总结---大数据之Nifi工作笔记0012
查看>>