oracle中分组排序并取最大值
来源:互联网 发布:中航锂电研究院 知乎 编辑:程序博客网 时间:2024/05/01 20:31
最近工作中需要联合查询几个表中的数据,并且需要分组查询并取得每个组中的最大值,使用到了一个之前没有用过的oracle函数,分组排序函数。
分组排序函数可以满足以下需求:
1、要求取出按field1分组后,并在每组中按照field2排序;
2、亦或更加要求取出1中已经分组排序好的前多少行的数据
分组排序函数的用法:
1.row_number() over()
row_number()over(partition by col1 order by col2)表示根据col1分组,在分组内部根据col2排序,而此函数计算的值就表示每组内部排序后的顺序编号(组内连续的唯一的)。
与rownum的区别在于:使用rownum进行排序的时候是先对结果集加入伪劣rownum然后再进行排序,而此函数在包含排序从句后是先排序再计算行号码。row_number()和rownum差不多,功能更强一点(可以在各个分组内从1开始排序)。
2.rank() over()
rank()是跳跃排序,有两个第二名时接下来就是第四名(同样是在各个分组内)
dense_rank()也是连续排序,有两个第二名时仍然跟着第三名。相比之下row_number是没有重复值的。
我用到的是第一个row_number() over()函数,要使用这个函数分组排序后获取最大值的oracle语句:
select a,b from(select a,b,row_number()over(partition by a order by b desc)rownumber from tablename ) whererownumber =1
欢迎各位程序yuan批评指正~
阅读全文
0 0
- oracle中分组排序并取最大值
- oracle如何取分组最大值记录
- Oracle 分组排序取第一条
- 关于SQL分组取最大值的几中方式
- 数据分组取最大值行
- linq 分组取各组最大值
- oracle中分组排序统计
- oracle中分组排序函数
- SQL数据分组后取最大值或者取前几个值(按照某一列排序)
- SQL数据分组后取最大值或者取前几个值(按照某一列排序)
- SQL 中分组,并组中排序
- ArrayList 取最大值 排序
- Oracle数据库如何取连续数据并作分组
- Oracle取最大值问题
- oracle小记1--分组 排序 取最新时间记录
- oracle中按A列分组,B列排序,取B中第一条数据的查询
- Mysql按字段分组取最大值记录
- Mysql按字段分组取最大值记录
- MongoDB Shell的使用(三)
- SQL中IS NOT NULL与!=NULL的区别
- Elasticsearch关于unassigned shards的查看
- maven打包生成可执行jar文件
- 机器学习模型评价指标准确率召回率精确率
- oracle中分组排序并取最大值
- Django04-view
- 【产品经理三节课】第1章 产品经理的学习与成长
- oracle 创建过程与函数小记
- fl2440 plat_button.c驱动学习
- 通过ipmi无法从pci网卡启动pxe模式
- 笔试题记录
- 在Windows Server 2012 下设置VLAN
- opensource