Oracle Partition By 的使用
1.概述
Parttion by 关键字是Oracle中分析性函数的一部分,它和聚合函数不同的地方在于它能够返回一个分组中的多条记录,儿聚合函数一般只有一条反映统计值的结果。
2.使用方式
场景:查询出每个部门工资最低的员工编号【每个部门可能有两个最低的工资员工】
create table TSALER
(
userid NUMBER(10),
salary NUMBER(10),
deptid NUMBER(10)
) -- Add comments to the columns
comment on column TSALER.userid
is '员工ID';
comment on column TSALER.salary
is '工资';
comment on column TSALER.deptid
is '部门ID'; insert into TSALER (工号, 工资, 部门编号)
values (1, 200, 1); insert into TSALER (工号, 工资, 部门编号)
values (2, 2000, 1); insert into TSALER (工号, 工资, 部门编号)
values (3, 200, 1); insert into TSALER (工号, 工资, 部门编号)
values (4, 1000, 2); insert into TSALER (工号, 工资, 部门编号)
values (5, 1000, 2); insert into TSALER (工号, 工资, 部门编号)
values (6, 3000, 2);

查询结果:

2.1方法一
select tsaler.* from tsaler
inner join(select min(salary) as salary,deptid from tsaler group by deptid) c
on tsaler.salary=c.salary and tsaler.deptid=c.deptid
2.2方法二
select * from tsaler
inner join(select min(salary) as salary,deptid from tsaler group by deptid) c
using(salary,deptid)
2.3方法三
--row_number() 顺序排序
select row_number() over(partition by deptid order by salary) my_rank ,deptid,USERID,salary from tsaler;
--rank() (跳跃排序,如果有两个第一级别时,接下来是第三级别)
select rank() over(partition by deptid order by salary) my_rank,deptid,USERID,salary from tsaler;
--dense_rank()(连续排序,如果有两个第一级别时,接下来是第二级)
select dense_rank() over(partition by deptid order by salary) my_rank,deptid,USERID,salary from tsaler;
-------方案3解决方案
select * from (select rank() over(partition by deptid order by salary) my_rank,deptid,USERID,salary from tsaler) where my_rank=1;
select * from (select dense_rank() over(partition by deptid order by salary) my_rank,deptid,USERID,salary from tsaler) where my_rank=1;
Oracle Partition By 的使用的更多相关文章
- oracle partition table 分区表详解
Oracle partition table 分区表详解 分区表就是通过使用分区技术,将一张大表,拆分成多个表分区(独立的segment),从而提升数据访问的性能,以及日常的可维护性.分区表中,每个分 ...
- 详解Oracle partition分区表
随着表中行数的增多,管理和性能性能影响也将随之增加.备份将要花费更多时间,恢复也将 要花费更说的时间,对整个数据表的查询也将花费更多时间.通过把一个表中的行分为几个部分,可以减少大型表的管理和性能问题 ...
- [Oracle][Partition][Controlfile]Partition 操作是否和 Controlfile有关?
Partition 操作是否和 Controlfile有关? 通过实验来判断: 对比 Partition 前后的操作,看看controlfile 的dump 信息中是否有记录,结果发现没有记录在 co ...
- Oracle Partition 分区详细总结
此文从以下几个方面来整理关于分区表的概念及操作: 1.表空间及分区表的概念 2.表分区的具体作用 3.表分区的优缺点 4.表分区的几种类型及操作 ...
- Oracle Partition Outer Join 稠化报表
partition outer join实现将稀疏数据转为稠密数据,举例: with t as (select deptno, job, sum(sal) sum_sal from emp group ...
- Oracle partition by 使用说明
--用法详解 0.select * from wmg_test; ---测试数据 1.select v1,v2,sum(v2) over(order by v2) as sum --按 ...
- oracle partition 分区
--范围分区create table person( id int, name varchar2(20), birth date, sex char(2))partition by range (bi ...
- oracle 双机热备,oracle dataguard 和oracle rac的区别和联系(转)
Data Guard 是Oracle的远程复制技术,它有物理和逻辑之分,但是总的来说,它需要在异地有一套独立的系统,这是两套硬件配置可以不同的系统,但是这两套系统的软件结构保持一致,包括软件的版本,目 ...
- oracle 优化方案小记
1. 目前状况 1.1 表空间未合理规划,导致所有的用户下的所有表都创建在默认的表空间下 oracle 使用过程中未针对特定数据表进行特定的表空间规划,导致目前实例中所有的数据库表都存储中默认的表空间 ...
随机推荐
- lua元表与元方法
lua中提供的元表(metatable)与元方法(metamethod)是一种非常重要的语法,metatable主要用于做一些类似于C++重载操作符式的功能. lua中提供的元表是用于帮助lua变量完 ...
- php摇杆Tiger摇奖
先说下整体思路,代码已附下方. 1.递归产生一个非中奖数(即非连续数字:'111','222','333','444','555','666','777','888') 2.点击摇奖,把奖项通过设置的 ...
- 遍历ArrayList时同时修改引发的问题
看见一篇博客,没有写完整,于是增补了一下: 博客原文:http://www.cnblogs.com/alipayhutu/archive/2012/08/11/2634073.html 注:黄色字体为 ...
- JavaScript 函数声明,函数表达式,匿名函数,立即执行函数之区别
函数声明:function fnName () {-};使用function关键字声明一个函数,再指定一个函数名,叫函数声明. 函数表达式 var fnName = function () {-};使 ...
- ODP方式,大批量数据写入ORACLE数据库
项目中在同步数据的时候,需要把获得的数据DataTable,写入oracle数据库 因为System.Data.OracleClient写入方式写入大批量数据特别慢,改用Oracle.DataAcce ...
- 在mvc中实现图片验证码的刷新
首先,在项目模型(Model)层中建立一个生成图片验证码的类ValidationCodeHelper,代码如下: public class ValidationCodeHelper { //用户存取验 ...
- c语言文法简化版文法
<源程序>→<外部声明>|<外部声明><函数体> <外部申明>→<头文件><函数声明>|其他声明 <函数体&g ...
- 《storm实战-构建大数据实时计算读书笔记》
自己的思考: 1.接收任务到任务的分发和协调 nimbus.supervisor.zookeeper 2.高容错性 各个组件都是无状态的,状态 ...
- 高级java必会系列一:多线程的简单使用
众所周知,开启线程2种方法:第一是实现Runable接口,第二继承Thread类.(当然内部类也算...)常用的,这里就不再赘述.本章主要分析总结线程池和常用调度类. 一.线程池 1.newCache ...
- Python实现简单的记账本功能
目标: 1.使用序列化cPickle 2.账户中钱要大于花费的钱,否则提示请存钱 2.编写函数,实现存钱,花钱,查询及退出功能 1.序列化 pickle是python实现序列化的模块,次模块存在使用C ...