Oracle的排序函数
创建测试表:
create table Grades
(Sid varchar2(10),Cid varchar2(10),Fraction number(8,3)
);
insert into Grades values('01' , '01' , 80);
insert into Grades values('01' , '02' , 90);
insert into Grades values('01' , '03' , 99);
insert into Grades values('02' , '01' , 70);
insert into Grades values('02' , '02' , 60);
insert into Grades values('02' , '03' , 80);
insert into Grades values('03' , '01' , 80);
insert into Grades values('03' , '02' , 80);
insert into Grades values('03' , '03' , 80);
insert into Grades values('04' , '01' , 50);
insert into Grades values('04' , '02' , 30);
insert into Grades values('04' , '03' , 20);
insert into Grades values('05' , '01' , 76);
insert into Grades values('05' , '02' , 87);
insert into Grades values('06' , '01' , 31);
insert into Grades values('06' , '03' , 34);
insert into Grades values('07' , '02' , 89);
insert into Grades values('07' , '03' , 98);
1、row_number函数:
它会为查询出来的每一行记录生成一个序号,依次排序且不会重复,注意使用row_number函数时必须要用over子句选择对某一列进行排序才能生成序号。
select g.*,row_number() over(partition by g.cid order by g.fraction desc)
as 排名 from grades g;--其中partition by是为了分组
2、rank()函数:
与row_number函数不同的是,rank函数考虑到了over子句中排序字段值相同的情况,如果使用rank函数来生成序号,over子句中排序字段值相同的序号是一样的,后面字段值不相同的序号将跳过相同的排名号排下一个,也就是相关行之前的排名数加1,rank()函数会跳号,遇到相同值,排序不连续
select g.*,rank() over(partition by g.cid order by g.fraction desc)
as 排名 from grades g;
3、dense_rank()函数:
dense_rank函数的功能与rank函数类似,dense_rank函数在生成序号时是连续的,而rank函数生成的序号有可能不连续。dense_rank函数出现相同排名时,将不跳过相同排名号,rank值紧接上一次的rank值。在各个分组内,rank()是跳跃排序,有两个第一名时接下来就是第三名,dense_rank()是连续排序,有两个第一名时仍然跟着第二名。
select g.*,dense_rank() over(partition by g.cid order by g.fraction desc)
as 排名 from grades g;
Oracle的排序函数相关推荐
- oracle 条件排序函数,oracle中分组排序函数
项目开发中,我们有时会碰到需要分组排序来解决问题的情况,如:1.要求取出按field1分组后,并在每组中按照field2排序:2.亦或更加要求取出1中已经分组排序好的前多少行的数据 这里通过一张表的示 ...
- Oracle 分组排序函数
项目开发中,我们有时会碰到需要分组排序来解决问题的情况: 1.要求取出按field1分组后,并在每组中按照field2排序: 2.亦或更加要求取出1中已经分组排序好的前多少行的数据 这里通过一张表的示 ...
- Oracle 分组排序函数详解 (row_number、rank、dense_rank)
文章目录 1 概述 2 分类 2.1 排序函数 2.2 分组子句 1 概述 1. 完整格式(1) row_number() over(partition by 列1 order by 列2) 2. 三 ...
- oracle求和分组排序,oracle中分组排序函数用法 - 转
项目开发中,我们有时会碰到需要分组排序来解决问题的情况,如:1.要求取出按field1分组后,并在每组中按照field2排序:2.亦或更加要求取出1中已经分组排序好的前多少行的数据 这里通过一张表的示 ...
- Oracle中的排序和排序函数的使用
参考地址:https://www.cnblogs.com/qiuting/p/7880500.html 前排提示,下面的实例用到的hr.employees表是Oracle11g的orcl实例自带的表空 ...
- 先随机后排序的oracle,Oracle用decode函数或CASE-WHEN实现自定义排序
Oracle用decode函数或CASE-WHEN实现自定义排序 1 问题 对SQL排序,只要在order by后面加字段就可以了,可以通过加desc或asc来选择降序或升序.但排序规则是默认的,数字 ...
- oracle vm concat指定分隔符,重写Oracle的wm_concat函数,自定义分隔符、排序
oracle中,wm_concat函数是一个聚合函数,和mysql中的group_concat函数类似,不过group_concat函数比较强大,可以定义分隔符和排序,当然所谓强大是相对的,这里假使我 ...
- 重写Oracle的wm_concat函数,自定义分隔符、排序
oracle中,wm_concat函数是一个聚合函数,和mysql中的group_concat函数类似,不过group_concat函数比较强大,可以定义分隔符和排序,当然所谓强大是相对的,这里假使我 ...
- list对oracle结果集排序了_详解SQL窗口函数和分组排序函数
Mysql从8.0版本开始,也和Sql Server.Oracle一样支持在查询中使用窗口函数,本文将根据官方文档,通过实例介绍窗口函数并举例分组排序函数的使用. 英语好的大佬请移步官方文档~点我! ...
最新文章
- OkHttp3 HTTP请求执行流程分析
- 地理生物高考成绩查询2021,2021北京中考地理生物成绩查询时间【已公布】
- mocha 测试 mysql_node项目mocha自动化测试的疑问
- Hangfire入门(任务调度)
- php后端文件,【后端开发】php文件用啥打开
- informantion_schema库介绍
- 团队开发时该如何同步数据库变更到本地
- 洛谷 P4392 Sound 静音问题
- 中国人工智能趋势报告(完整版)
- 【尚硅谷】JavaWeb
- NIO 网络编程之群聊系统
- 【MODBUS】组态王通过串口与MODBUS RTU设备通讯
- ggradar画雷达图
- java防止注册刷短信攻击_java面试(1)如何防止恶意攻击短信验证码接口
- 大数据之VMware和centos7安装
- 02.windows转mac日记——操作习惯
- Exchange绝妙使用-日历、邮件、通讯录双向同步
- 抽屉原理与Simhash
- Innosetup打包脚本常用设置大全
- 在R语言中进行缺失值填充:估算缺失值