Oracle 开窗函数
1、原理简介:
row_number( partition by columnA order by columnB asc) rn:按照columnA分区, columnB排序,若有相同数据,则相同数据的排名依次递增;详见示例;
dense_rank( partition by columnA order by columnB asc) rn:按照columnA分区, columnB排序,若有相同数据,则相同数据的排名相同,不同数据排名依次递增;详见示例;
rank( partition by columnA order by columnB asc) rn:按照columnA分区, columnB排序,若有相同数据,则相同数据的排名相同,不同数据空出排名递增;详见示例;
2、例子:
2.1- row_number()
SQL:
select A.pno,A.pname ,
row_number() over(partition by A.pno order by A.pname asc) rn
from test A;
结果集: