rank()

阅读(2692) 标签: rank,

本章介绍rank()函数的多种用法。

A.rank( y,x )

描述:

计算指定值在序列成员中的排名。

语法:

A.rank(y,x)

备注:

对着序列A逐条记录计算表达式x的值,返回y在序列A.(x)中的排名。默认为升序排名。

选项:

@z

降序排名。

@i

去掉重复成员后再计算排名。

@s

有重复成员时先对其排名做均值计算,再计算排名,返回值存在非整数的情况。

参数:

A

序列。

x

A的计算表达式,A为排列/序表时不可省略。

y

参与排名的值。

返回值:

数值

示例:

A为序列:

 

A

 

1

=[2,1,3,4,8,5,2,0]

 

2

=A1.rank(6)

返回8计算6在序列A1中的升序排名。

3

=A1.rank@z(6)

返回2计算6在序列A1中的降序排名。

4

=A1.rank@i(6)

返回7先去掉重复成员,然后再计算6在序列A1中的升序排名。

5

=A1.rank@s(2)

返回3.5使用@s选项,先对重复成员的排名做均值运算,再计算排名,即:序列A1的成员值2的排名分别为34,均值运算结果为(3+4)/2=3.5,所以2在序列中的排名为3.5

6

=A1.rank(6,~+3)

返回5先对序列计算表达式后,再计算6在其中排名。

A为序表/排列:

 

A

 

1

=demo.query("select * from SCORES where SUBJECT='English'").sort(SCORE:-1)

 

2

=A1.rank@z(90,SCORE)

计算90在序列A1SCORE中的降序排名,结果返回5

3

=A1.rank@iz(90,SCORE)

去除序列A1中的重复SCORE值后,计算90在其中的降序排名,结果返回3

4

=A1.rank@sz(90,SCORE)

先对SCORE的重复值做均值运算,然后再计算排名,结果返回5.5

 

rank()

描述:

循环函数中迭代运算,对有相同字段值的成员统一编号。

语法:

rank(F;Gi,…)

备注:

用于循环函数中,如果Gi字段值相同则对F字段值相同的成员的从1开始编号,F字段值相同的编号相同,当F字段值发生变化时下一个F字段值的编号变为上一个F字段值的编号加上上一个F字段相同值的个数。如果Gi字段值发生变化,则重复上述运算。注意,该函数没有排序功能。

参数:

F

字段名。

Gi

字段名。

返回值:

整数

示例:

 

A

 

1

=demo.query("select  SUBJECT,STUDENTID,SCORE from SCORES where CLASS='Class one' order by SUBJECT,SCORE desc")

查询班级为Class one的学生成绩,根据SUBJECT升序同时根据SCORE降序排序。

2

=A1.derive(rank(SCORE;SUBJECT): RANKING)

获取单科成绩排名次序,分数相同则名次相同,并列成绩占用名次,结果值保存在RANKING字段中。