当前位置: 移动技术网 > IT编程>数据库>Oracle > Oracle中partitionby的使用方法讲解

Oracle中partitionby的使用方法讲解

2017年12月30日  | 移动技术网IT编程  | 我要评论

电气自动化专业排名,如果我变成回忆伴奏,爱花沙也

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

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

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网