欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Oracle中partitionby的使用方法讲解

程序员文章站 2022-04-08 10:16:03
Parttion by 关键字是Oracle中分析性函数,可以进行分组排序, 和row_number()、rank()、dense_rank()函数一起使用 --row_num...

Parttion by 关键字是Oracle中分析性函数,可以进行分组排序,

和row_number()、rank()、dense_rank()函数一起使用

--row_number() 顺序排序

select row_number() over (partition by class order by score desc) 排名 ,NO,score,class from A_TEST

--rank() 跳跃排序,如果有两个第一级别时,接下来是第三级别

select rank() over (partition by class order by score desc) 排名 ,NO,score,class from A_TEST

--dense_rank() 连续排序,如果有两个第一级别时,接下来是第二级

select dense_rank() over (partition by class order by score desc) 排名 ,NO,score,class from A_TEST

A_TEST

NO CLASS SCORE

1001 1 99

1002 2 98

1001 3 97

1004 1 98

1005 1 97

1006 1 99

1007 2 98

1008 3 97

执行结果

①select row_number() over (partition by class order by score desc) 排名 ,NO,score,class from A_TEST;

排名 NO SCORE CLASS

1 1001 99 1

2 1006 99 1

3 1004 98 1

4 1005 97 1

1 1002 98 2

2 1007 98 2

1 1008 97 3

2 1001 97 3

②select rank() over (partition by class order by score desc) 排名 ,NO,score,class from A_TEST;

排名 NO SCORE CLASS

1 1001 99 1

1 1006 99 1

3 1004 98 1

4 1005 97 1

1 1002 98 2

1 1007 98 2

1 1008 97 3

1 1001 97 3

③select dense_rank() over (partition by class order by score desc) 排名 ,NO,score,class from A_TEST;

排名 NO SCORE CLASS

1 1001 99 1

1 1006 99 1

2 1004 98 1

3 1005 97 1

1 1002 98 2

1 1007 98 2

1 1008 97 3

1 1001 97 3

看排名可以知道三种函数的差异。