重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
首先,来构造一些数据
成都创新互联公司专注于梁山企业网站建设,成都响应式网站建设公司,商城系统网站开发。梁山网站建设公司,为梁山等地区提供建站服务。全流程按需求定制开发,专业设计,全程项目跟踪,成都创新互联公司专业和态度为您提供的服务
drop table test;
create table test
(
name varchar2(10),
account number(5)
);
insert into test values ('张三','5');
insert into test values ('王五','10');
insert into test values ('小二','10');
insert into test values ('李四','20');
insert into test values ('小三','40');
insert into test values ('小四','50');
insert into test values ('小五','90');
insert into test values ('小六','90');
insert into test values ('小七','90');
commit;
下面来看一下一些方式的排名结果:
1. select t.*,dense_rank() over(order by t.account asc) 排名 from test t;
2. select t.*,dense_rank() over(order by t.account desc) 排名 from test t;
3. select t.*,rank() over(order by t.account asc) 排名 from test t;
4. select t.*,rank() over(order by t.account desc) 排名 from test t;
简单用法:
rank() over(partition by 分组字段 order by 排序字段)
partition by 分组字段为可选。
oracle里面相关的排序函数:
row_number 排名不并列
rank 排名并列
dense_rank排名并列
集中函数区别:
一共四名选手参赛,两名选手的成绩一致,皆为第二名。那么按照不同的算法排名如下:
row_number 1,2,3,4 (2,3的成绩一致)
rank 1,2,2,4(没有第三名)
dense_rank 1,2,2,3
要利用什么函数,首先找出对应的函数名称。按字母顺序查找以R开头的,点击确定。在菜单栏中单击插入命令的函数,指定的函数也就是说你要对哪一个数进行排名,这里选择的是H2中单元格的总成绩。
函数名后面的参数中,number为需要求排名的那个数值或者单元格名称(单元格内必须为数字),ref 为排名的参照数值区域,order的为0和1,默认不用输入,得到的就是从大到小的排名,若是想求倒数第几,order的值请使用1。这里共讲到三个参数,需要注意的第三个参数是可以省略的。
除了选择插入函数还可以直接在单元格里面输入函数也可以得到同样的效果。在B2单元格里面先输入等于号,一般等于号输入了之后就代表这个单元格里面的是一个公式。
RANK是一个从oracle 8.1.6开始引入的统计函数。RANK的功能是按照某种分组方式计算出返回结果的排行。RANK函数有两个,一个是RANK,另外一个是DENSE_RANK。RANK排序在碰到并列值的时候,下一个排行序号会跳过并列的值,而DENSE_RANK排序的结果有并列排名,下一个排行顺序仅仅加一。
oracle查询排名可以使用排名函数。
比如:RANK DENSE_RANK
参考语句:
--按照笔试成绩进行排名,取出前两名
select * from
(
SELECT p.writtenExam, i.stuName, i.stuClass,
RANK() OVER ( ORDER BY p.writtenExam desc ) 排名1
,DENSE_RANK() OVER ( ORDER BY p.writtenExam desc) 排名2
FROM stuInfo i
INNER JOIN stuMarks p
ON i.stuNo = p.stuNo
) f
where 排名1=2