您的位置首页百科知识

oracle rank函数怎么用

oracle rank函数怎么用

的有关信息介绍如下:

oracle rank函数怎么用

rank函数是oracle分析函数中的一个,

主要用法是:

rank() over (order by 排序字段 顺序)

rank() over (partition by 分组字段 order by 排序字段 顺序)

本例将结合具体示例来说明如何使用rank函数

首先创建示例表,再初始化几条测试数据

create table t_score

(

id number primary key,

student_id number(3),

student_name char(8) not null,

sub_name varchar2(20),

score number(10,2)

);

insert into t_score (id, student_id, student_name, sub_name, score)

values (1, 1, 'John', 'c#', 90);

insert into t_score (id, student_id, student_name, sub_name, score)

values (2, 1, 'John', 'php', 97);

insert into t_score (id, student_id, student_name, sub_name, score)

values (3, 1, 'John', 'java', 85);

insert into t_score (id, student_id, student_name, sub_name, score)

values (4, 2, 'Lili', 'c#', 75);

insert into t_score (id, student_id, student_name, sub_name, score)

values (5, 2, 'Lili', 'php', 55);

insert into t_score (id, student_id, student_name, sub_name, score)

values (6, 2, 'Lili', 'java', 91);

insert into t_score (id, student_id, student_name, sub_name, score)

values (7, 3, 'Tom', 'c#', 40);

insert into t_score (id, student_id, student_name, sub_name, score)

values (8, 3, 'Tom', 'php', 89);

insert into t_score (id, student_id, student_name, sub_name, score)

values (9, 3, 'Tom', 'java', 98);

commit;

查询java科目的名次

select sc.student_id,sc.student_name,sub_name,sc.score,

rank() over (order by score desc) 名次

from t_score sc

where sub_name='java';

对比:rank()与dense_rank():非连续排名与连续排名(都是简单排名)

select sc.student_id,sc.student_name,sub_name,sc.score,

dense_rank() over (order by score desc) 名次

from t_score sc

where sub_name='java';

查询各学生各科排名(分区排名)

select sc.student_id,sc.student_name,sub_name,sc.score,

rank() over (partition by sub_name order by score desc) 名次

from t_score sc;

查询各同学总分

select student_id,student_name,sum(score) sum_score from t_score

group by student_id,student_name;

根据总分查询各同学名次

select x.*,

rank() over (order by sum_score desc) 名次

from (

select student_id,student_name,sum(score) sum_score from t_score

group by student_id,student_name ) x

以上就是针对rank函数的使用案例说明