Rank()使用说明:
a. 函数简介:
返回结果集分区内指定字段的值的排名,指定字段的值的排名是相关行之前的排名加一。
b. 语法:
RANK() OVER([<partiton_by_clause>]<order by clause>)
c. 参数说明:
partition_by_clause 将from子句生成的结果集划分为应用到RANK函数的分区。
Order_by_clause确定将RANK值应用到分区中的行时所使用的顺序。
d. 以下是实例使用:
1. 创建测试表
sql代码
- --创建表
- --Createtable
- createtableT_score
- (
- AUTOIDNUMBERnotnull,
- S_IDNUMBER(3),
- S_NAMECHAR(8) SUB_NAMEVARCHAR2(20),250)"> scoreNUMBER(10,2)
- );
- --Addcommentstothetable
- commentonis'学生成绩表';
- --Addcommentstothecolumns
- columnT_score.AUTOID
- is'主键ID';
- columnT_score.S_ID
- is'学生ID';
- columnT_score.S_NAME
- is'学生姓名';
- columnT_score.SUB_NAME
- is'科目';
- columnT_score.score
- is'成绩';
2. 创建测试记录
insertintot_score(AUTOID,S_ID,S_NAME,SUB_NAME,score)
3. 分不同情况查询
查询结果:
学号 | 姓名 | 科目 | 成绩 | |
1 | 张三 | 语文 | 80.00 | |
2 | 李四 | 数学 | 0.00 | |
50.00 | ||||
3 | 张三丰 | 10.00 | ||
体育 | 120.00 | |||
4 | 杨过 | JAVA | 90.00 | |
5 | mike | c++ | Oracle | 77.00 |
77.00 |
3.2 查询Oracle科目成绩名次-非连续rank
--2.查询Oracle科目成绩名次-非连续rank查询结果:
学号 | 姓名 | @H_33_502@ 科目成绩 | 名次 | ||
4 | 杨过 | Oracle | 77.00 | 1 | |
2 | 李四 | 3 | 张三丰 | 0.00 | 3 |
3.3查询Oracle科目成绩名次-连续dense_rank
--3.查询Oracle科目成绩名次-连续dense_rank
学号 | 姓名 | 科目 | 成绩 | 名次 | |
4 | 杨过 | Oracle | 77.00 | 1 | |
2 | 李四 | 3 | 张三丰 | 0.00 | 2 |
3.4 查询各学生各科排名
--4.查询各学生各科排名学号 | 姓名 | 科目 | 成绩 | 名次 | |||||||||
5 | mike | c++ | 80.00 | 1 | |||||||||
2 | 李四 | 数学 | Oracle | 77.00 | 2 | ||||||||
语文 | 50.00 | 3 | |||||||||||
4 | 杨过 | JAVA | 90.00 | 1 | 张三 | 0.00 | 3 | 张三丰 | 体育 | 120.00 | 10.00 | 4 |
3.5 查询各科名次(分区)
--5.查询各科名次(分区)学号 | 姓名 | 成绩 | 名次 | |||||
4 | 杨过 | JAVA | 90.00 | 1 | ||||
77.00 | 2 | 李四 | 3 | 张三丰 | 0.00 | 2 | ||
5 | mike | c++ | 80.00 | 数学 | 1 | 张三 | 3 | |
体育 | 120.00 | 语文 | 50.00 | 10.00 | 来源:
http://zhaisx.iteye.com/blog/774165
猜你在找的Oracle相关文章 |