oracle查詢排名可以使用排名函數(shù)。
創(chuàng)新互聯(lián)公司從2013年開始,先為錦江等服務(wù)建站,錦江等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為錦江企業(yè)網(wǎng)站制作PC+手機+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。
比如:RANK DENSE_RANK
參考語句:
--按照筆試成績進(jìn)行排名,取出前兩名
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
簡單用法:
rank()
over(partition
by
分組字段
order
by
排序字段)
partition
by
分組字段為可選。
oracle里面相關(guān)的排序函數(shù):
row_number
排名不并列
rank
排名并列
dense_rank排名并列
集中函數(shù)區(qū)別:
一共四名選手參賽,兩名選手的成績一致,皆為第二名。那么按照不同的算法排名如下:
row_number
1,2,3,4
(2,3的成績一致)
rank
1,2,2,4(沒有第三名)
dense_rank
1,2,2,3
首先,來構(gòu)造一些數(shù)據(jù)
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;
下面來看一下一些方式的排名結(jié)果:
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;