OraclePL/sql——Rank()函数是如何计算的

OraclePL/sql——Rank()函数是如何计算的,oracle,Oracle,我对秩函数的有限理解是,如果n行与划分标准匹配,则根据排序,第一组不匹配的行的秩为1,然后将该组1相加,得到下一个行的秩。它是如何升到第二名的?在下面的数据集中,我有3行秩为9的匹配行,下一个秩为12 9+3=12,然后我有2行秩为12的匹配行,下一个秩为14。我不明白排名1和排名2的行。增加这些行的秩的过程是什么 这是我的源代码 select Pos_ID, work_city, organization RANK() OVER (PARTITION BY work_city ORDER BY

我对秩函数的有限理解是,如果n行与划分标准匹配,则根据排序,第一组不匹配的行的秩为1,然后将该组1相加,得到下一个行的秩。它是如何升到第二名的?在下面的数据集中,我有3行秩为9的匹配行,下一个秩为12 9+3=12,然后我有2行秩为12的匹配行,下一个秩为14。我不明白排名1和排名2的行。增加这些行的秩的过程是什么

这是我的源代码

select Pos_ID, work_city, organization
RANK() OVER (PARTITION BY work_city ORDER BY organization) rnk
from DDTMS.POSITIONS
where pos_ID < 14800 order by rnk; 

每个分区的秩是独立的。所以每个分区的秩都是1。至少有两行且在第一列没有连接的分区将具有第二列

如果您对结果进行排序以匹配秩函数的分区和排序,可能会更清楚:

select Pos_ID, work_city, organization
RANK() OVER (PARTITION BY work_city ORDER BY organization)
from DDTMS.POSITIONS
where pos_ID < 14800
order by work_city, organization;

每个分区的秩是独立的。所以每个分区的秩都是1。至少有两行且在第一列没有连接的分区将具有第二列

如果您对结果进行排序以匹配秩函数的分区和排序,可能会更清楚:

select Pos_ID, work_city, organization
RANK() OVER (PARTITION BY work_city ORDER BY organization)
from DDTMS.POSITIONS
where pos_ID < 14800
order by work_city, organization;

我在查询的外部遗漏了rnk别名和order by。我对RANK的看法是,它返回比当前记录早/小的记录数,加上1。所以rank=1表示比当前记录早/小的记录为零;秩=2表示比当前记录早/小正好有1条记录;秩12表示比当前记录早/小11条记录。我在查询的外部省略了rnk别名和order by。我对RANK的看法是,它返回比当前记录早/小的记录数,加上1。所以rank=1表示比当前记录早/小的记录为零;秩=2表示比当前记录早/小正好有1条记录;排名12表示比当前记录早/小11条记录。