RANK函数 百科内容来自于: 百度百科

函数简介

返回结果集分区内指定字段的值的排名,指定字段的值的排名是相关行之前的排名加一。

语法

RANK() OVER([<partition_by_clause>]<order by clause>)

参数

partition_by_clause 将from子句生成的结果集划分为应用到RANK函数的分区。
Order_by_clause确定将RANK值应用到分区中的行时所使用的顺序。

SQL示例

以下用一个成绩表作示例
table 架构
s_score(s_class(班级),s_id(学号),s_score(分数))
SQL statement1:
Select rank() over(order by s_score desc) as 名次,s_class,s_id,s_score from s_score
结果集如下
名次 s_class s_id s_score
1 二班 S20090733 100
2 一班 S20090635 99
3 三班 S20090919 97
4 一班 S20090846 96
5 一班 S20090825 95
6 二班 S20090715 94
7 三班 S20090836 91
8 二班 S20090631 86
SQL statement2:
Select rank() over(partition by s_class order by s_score desc) as 名次,s_class,s_id,s_score from s_score
结果集如下
名次 s_class s_id s_score
1 三班 S20090919 97
2 三班 S20090836 91
1 二班 S20090733 100
2 二班 S20090715 94
3 二班 S20090631 86
1 一班 S20090635 99
2 一班 S20090846 96
3 一班 S20090825 95

EXCEL示例

再举列一个比较简单的,这样子更容易看明白:
假如A列从A1单元格起,依次有数据80、98、65、79、65。
在B1中编辑公式
=RANK(A1,$A$1:$A$5,0)
回车确认后,向下复制公式到B5单元格
效果:
从B1单元格起依次返回值为2、1、4、3、4。
注意:
公式中的参数0(零)或省略,Excel 对数字的排位是把数据从大到小的降序排列,也就是说数值最大的排名第1。
再试试看:
在C1中编辑公式
=RANK(A1,$A$1:$A$5,1)
回车确认后,向下复制公式到B5单元格。
此时从C1单元格起依次返回的值是4、5、1、3、1。
也就是说,此时A列中数据是按从小到大排列名次的,最小的数值排位第1,最大的数值排位最末
【如何使用RANK 平均的等级值为限制的观察值】
将数字数据转换为秩时, 可能要用于表示扎以便限制的观察每个接收的平均等级上的最小可能的秩而不是所有此类的观察值。在这篇文章中数值的示例阐释这一点。
虽然当前版本的 RANK 返回相应的结果对于大多数情况下,本文讨论了一个领带发生这种情况。例如对于您可能需要处理扎,如果您正在使用非参数化的统计假设测试涉及秩的 RANK。

Excel RANK 帮助

本文介绍的方法,还会介绍 Microsoft Office Excel 2003 和更高版本的 Excel RANK 帮助文件中 (但不是在更早版本的 RANK 帮助文件中)。此过程同样适用于所有版本的 Excel。RANK 函数本身不变。

语法

RANK(number, ref, order)
注意Number 必须有一个数字值 ; ref 必须是一个数组单元格区域包含数字数据值 ; 是可选的 order。如果省略 order,或者将它分配一个值为 0 (零) number 排位是数字的数字的在 ref 中 number 位置,如果 ref 数字的数字的按降序顺序排序。如果 order 分配任何非零值,假定 ref 为排名按升序排序。

用法的示例

为了说明这种用法的 RANK,创建一个空白 Excel工作表、 复制下表,选中您空白 Excel 工作表中的单元格A1,然后在 编辑菜单上单击 粘贴,以便在下表中的项将填充工作表中的单元格 A1:F12。
注意在 Microsoft Office Excel 2007 年 粘贴命令是在 开始选项卡上的剪贴板组中。 收起该表格展开该表格
10
=rank(a1,$a$1:$a$12,1)
= b1 + (COUNT($A$1:$A$12) + 1-RANK($A1,$A$1:$A$12,0)-RANK($A1,$A$1:$A$12,1)) / 2

=rank(a1,$a$1:$a$12,0)
= e1 + (COUNT($A$1:$A$12) + 1-RANK($A1,$A$1:$A$12,0)-RANK($A1,$A$1:$A$12,1)) / 2
21
=rank(a2,$a$1:$a$12,1)
= b2 + (COUNT($A$1:$A$12) + 1-RANK($A2,$A$1:$A$12,0)-RANK($A2,$A$1:$A$12,1)) / 2

=rank(a2,$a$1:$a$12,0)
= e2 + (COUNT($A$1:$A$12) + 1-RANK($A2,$A$1:$A$12,0)-RANK($A2,$A$1:$A$12,1)) / 2
21
=rank(a3,$a$1:$a$12,1)
= b3 + (COUNT($A$1:$A$12) + 1-RANK($A3,$A$1:$A$12,0)-RANK($A3,$A$1:$A$12,1)) / 2

=rank(a3,$a$1:$a$12,0)
= e3 + (COUNT($A$1:$A$12) + 1-RANK($A3,$A$1:$A$12,0)-RANK($A3,$A$1:$A$12,1)) / 2
21
=rank(a4,$a$1:$a$12,1)
= b4 + (COUNT($A$1:$A$12) + 1-RANK($A4,$A$1:$A$12,0)-RANK($A4,$A$1:$A$12,1)) / 2

=rank(a4,$a$1:$a$12,0)
= e4 + (COUNT($A$1:$A$12) + 1-RANK($A4,$A$1:$A$12,0)-RANK($A4,$A$1:$A$12,1)) / 2
21
=rank(a5,$a$1:$a$12,1)
= b5 + (COUNT($A$1:$A$12) + 1-RANK($A5,$A$1:$A$12,0)-RANK($A5,$A$1:$A$12,1)) / 2

=rank(a5,$a$1:$a$12,0)
= e5 + (COUNT($A$1:$A$12) + 1-RANK($A5,$A$1:$A$12,0)-RANK($A5,$A$1:$A$12,1)) / 2
33
=rank(a6,$a$1:$a$12,1)
= b6 + (COUNT($A$1:$A$12) + 1-RANK($A6,$A$1:$A$12,0)-RANK($A6,$A$1:$A$12,1)) / 2

=rank(a6,$a$1:$a$12,0)
= e6 + (COUNT($A$1:$A$12) + 1-RANK($A6,$A$1:$A$12,0)-RANK($A6,$A$1:$A$12,1)) / 2
33
=rank(a7,$a$1:$a$12,1)
= b7 + (COUNT($A$1:$A$12) + 1-RANK($A7,$A$1:$A$12,0)-RANK($A7,$A$1:$A$12,1)) / 2

=rank(a7,$a$1:$a$12,0)
= e7 + (COUNT($A$1:$A$12) + 1-RANK($A7,$A$1:$A$12,0)-RANK($A7,$A$1:$A$12,1)) / 2
52
=rank(a8,$a$1:$a$12,1)
= b8 + (COUNT($A$1:$A$12) + 1-RANK($A8,$A$1:$A$12,0)-RANK($A8,$A$1:$A$12,1)) / 2

=rank(a8,$a$1:$a$12,0)
= e8 + (COUNT($A$1:$A$12) + 1-RANK($A8,$A$1:$A$12,0)-RANK($A8,$A$1:$A$12,1)) / 2
52
=rank(a9,$a$1:$a$12,1)
= b9 + (COUNT($A$1:$A$12) + 1-RANK($A9,$A$1:$A$12,0)-RANK($A9,$A$1:$A$12,1)) / 2

=rank(a9,$a$1:$a$12,0)
= e9 + (COUNT($A$1:$A$12) + 1-RANK($A9,$A$1:$A$12,0)-RANK($A9,$A$1:$A$12,1)) / 2
52
=rank(a10,$a$1:$a$12,1)
= b10 + (COUNT($A$1:$A$12) + 1-RANK($A10,$A$1:$A$12,0)-RANK($A10,$A$1:$A$12,1)) / 2

=rank(a10,$a$1:$a$12,0)
= e10 + (COUNT($A$1:$A$12) + 1-RANK($A10,$A$1:$A$12,0)-RANK($A10,$A$1:$A$12,1)) / 2
61
=rank(a11,$a$1:$a$12,1)
= b11 + (COUNT($A$1:$A$12) + 1-RANK($A11,$A$1:$A$12,0)-RANK($A11,$A$1:$A$12,1)) / 2

=rank(a11,$a$1:$a$12,0)
= e11 + (COUNT($A$1:$A$12) + 1-RANK($A11,$A$1:$A$12,0)-RANK($A11,$A$1:$A$12,1)) / 2
73
=rank(a12,$a$1:$a$12,1)
= b12 + (COUNT($A$1:$A$12) + 1-RANK($A12,$A$1:$A$12,0)-RANK($A12,$A$1:$A$12,1)) / 2

=rank(a12,$a$1:$a$12,0)
= e12 + (COUNT($A$1:$A$12) + 1-RANK($A12,$A$1:$A$12,0)-RANK($A12,$A$1:$A$12,1)) / 2
注意您将此表粘贴到新的 Excel 工作表后,单击 粘贴选项按钮,然后单击 匹配目标格式
在 Excel 2003 年的粘贴区域仍处于选中状态的情况下使用指向 格式菜单上的 ,然后单击列宽
在 Excel 2007 年的粘贴区域仍处于选定状态在 开始选项卡上的单元格组中单击 格式,然后单击 自动调整列宽
某些用于您可能希望使用考虑重复的级别的定义。这样做将以下的修正因素添加到返回的 RANK 值中。该修正因素是合适的降序计算排位的位置 (order = 0 或省略) 或按升序顺序 (order = 非零值)。 (COUNT(ref) + 1 – RANK(number, ref, 0) – RANK(number, ref, 1))/2.
工作表说明了此级别的定义。数据是单元格A1:A12。在单元格B1:B12 是按升序返回的 RANK 的秩。中的单元格A2:A5 观察常见值为 21 与相关联。这将产生常见排位为 2。没有一个较低排名观察,10。这些四个值的 21 占用的排名位置 2、 3、 4 和 5 并且有一个平均排位 (2 + 3 + 4 + 5) / 4 = 3.5。同样,两个的观察值中的单元格A6:A7 每 33,有与低级别的五个观察值。因此,这些两个观察值占用的排名位置 6 和 7,并且有一个平均排位 (6 + 7) / 2 = 6.5。最后,三个的观察值的单元格A8:A10 中有一个公共值 52。没有与低级别的七个观察值。因此,这些三个观察值占用 8、 9 和 10 的排名位置和具有的 (8 + 9 + 10) 的平均秩 / 3 = 9。
在 C 列中的项包含修正系数为限制的秩,并显示这些平均秩扎考虑在内。在列 B 和 C 列中的值是完全相同的观察不与其他的观察说明如行 1、 11,和 12 依赖。
单元格E1:E12 包含按降序顺序返回的 RANK 的秩。有两个条目具有较低的秩,比单元格A8:A10 中的三个条目。单元格A8:A10 具有一个公共值 54。因此,这些三个项占用的排名位置 3、 4 和 5,并且有一个平均排位 (3 + 4 + 5) / 3 = 4。有两个条目中的单元格A6:A7 比的低级别的五个条目。单元格A6:A7 具有一个公共值 33。因此,这些两个项占用排名位置 6 和 7,并有一个平均排位 (6 + 7) / 2 = 6.5。有七个条目具有较低的秩,比单元格A2:A5 中的四个条目。单元格A2:A5 具有一个公共值 21。因此,这些四个项占用排名的位置,8、 9、 10、 11 和平均值 (8 + 9 + 10 + 11) 的 / 4 = 9.5。
在 F 列中的项包含修正系数为限制的秩和显示这些平均秩扎考虑在内。列 E 和 F 列中的值是完全相同的观察不与其他的观察说明如行 1、 11,和 12 依赖。

结论

本文介绍并说明了可用于限制秩排名数据时考虑了修正因素。您可以使用与 RANK 函数一起修正因素。修正因素效果同样不错秩何时按升序或降序排序。
$firstVoiceSent
- 来自原声例句
小调查
请问您想要如何调整此模块?

感谢您的反馈,我们会尽快进行适当修改!
进来说说原因吧 确定
小调查
请问您想要如何调整此模块?

感谢您的反馈,我们会尽快进行适当修改!
进来说说原因吧 确定