大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
首先,来构造一些数据
应县网站制作公司哪家好,找创新互联公司!从网页设计、网站建设、微信开发、APP开发、响应式网站开发等网站项目制作,到程序开发,运营维护。创新互联公司于2013年创立到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选创新互联公司。
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
纳闷这些什么什么用法的问题为什么不先搜索一下而直接在这里问呢?网上这些用法介绍很详细的。之前回答的一个复制过来你看下:
两种用法:
select rank(7500) within group(order by empno) from emp a;
select rank() over(order by empno),a.* from emp a;
第一种计算7500在empno中排在第几位。
第二种计算各行empno在总结果集中排在第几位。
同样的用法还有dense_rank,对应如果empno出现重复的时候排行情况。
以上。
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