Oracle中partitionby的使用方法讲解

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

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

(0)
上一篇 2022年3月22日
下一篇 2022年3月22日

相关推荐