本章介绍rank()函数的多种用法。
描述:
计算序列成员排名
语法:
A.rank(y)
备注:
求成员y在序列A中的排名,缺省从小到大排,返回成员y的排名。
选项:
@z |
从大到小排名。注意:这里是小写的字母"z" |
@i |
先去掉A中的重复成员,然后计算y在其中的排名 |
@s |
先对有重复成员的排名做均值计算,然后返回计算后的排名,可能不是整数。例如:[3,2,6,6,9],常用的排名结果为[2,1,3,3,5],使用@s选项时,采用平均排名就会变为[2.0,1.0,(3+4)/2,(3+4)/2,5.0] |
参数:
A |
序列 |
y |
A中的成员 |
返回值:
序列A的成员排名组成的数列
示例:
|
A |
|
1 |
=[2,1,3,4,8,5,2,0] |
|
2 |
=A1.rank(6) |
8,从小到大的排名 |
3 |
=A1.rank@z(6) |
2,从大到小的排名 |
4 |
=A1.rank@i(2) |
3,先去掉重复成员,然后计算排名 |
5 |
=A1.rank@s(2) |
3.5,先对有重复成员的排名做均值运算,再返回排名 |
相关概念:
描述:
获取某成员在经过计算后的序列中的排名
语法:
A.rank(y,x) |
相当于A.(x).rank(y) |
备注:
对着序列A逐条记录计算表达式x的值,返回y在序列A.(x)中的排名。缺省排名顺序从小到大。
选项:
@z |
从大到小排名。注意:这里是小写的字母“z” |
@i |
先去掉A.(x)中的重复成员,然后计y在其中的排名 |
@s |
先对有重复成员的排名做均值计算,然后返回计算后的排名,可能不是整数。例如:[3,2,6,6,9],常用的排名结果为[2,1,3,3,5],使用@s选项时,采用平均排名就会变为[2.0,1.0,(3+4)/2,(3+4)/2,5.0] |
参数:
x |
A的计算表达式 |
y |
A中的成员或者用于比较A.(x)的值 |
A |
序列 |
返回值:
y成员排名
示例:
|
A |
|
1 |
=demo.query("select * from SCORES where SUBJECT='English'") |
|
2 |
=A1.rank(90,SCORE) |
23,从小到大排名 |
3 |
=A1.rank@z(90,SCORE) |
5,从大到小排名 |
4 |
=A1.rank@i(90,SCORE) |
10,去除重复的成绩后的排名 |
5 |
=A1.(SCORE).rank(90) |
23 |
6 |
=A1.rank@s(90,SCORE) |
23.5,先对有重复成员的排名做均值运算,再返回排名 |
相关概念:
描述:
循环函数中迭代运算,对有相同字段值的的成员进行统一编号
语法:
rank(F;Gi,…)
备注:
用于循环函数中,如果Gi字段值相同则对F字段值相同的成员的从1开始进行编号,F字段值相同的编号相同,当F字段值发生变化时下一个F字段值的编号变为上一个F字段值的编号加上上一个F字段相同值的个数。如果Gi字段值发生变化,则重复上述运算
参数:
F |
字段名 |
Gi |
字段名 |
返回值:
整数
示例:
|
A |
|
1 |
=demo.query("select * from SCORES ") |
|
2 |
=A1.derive(rank(STUDENTID;CLASS):F1) |
|