注意本功能不改变记录顺序,也不会返回排序后的记录。
语法:
{<排名依据> [方向]} [选项] [命名 <排名的新列名>] [过滤] <过滤数量> [删除] [分区 <分区字段>]
参数:<排名依据> [方向]
参数<排名依据>表示按什么依据进行内部排序,据此再取名次,注意本功能不返回排序的记录,返回的结果将保持原序。本参数是排名所依据的计算式,最简单的计算式可以是单字段名,不支持跨行和聚合运算,即计算式里不能含有F[i]、F[a:b]形式的相对位置计算,也不能有记录集合的求和、平均等聚合计算。类型是计算式;参数名必须省略。
参数[方向]是排名依据的方向。非必要参数,缺省升序;类型是枚举,枚举值有从小到大(升序)、从大到小(降序);参数名和参数值都不能省略。
重要规则:<排序依据>和[方向]这两个参数可以同时没有,表示按原记录的顺序取排名。这两个参数如果出现,可以是成对的,也可以只有<排序依据>而[方向]缺省。可以出现多对,表示按依次排序的结果计算排名。
例子:
对订单例子表(焦点表)按计算式(len(客户))的降序、订单金额的升序计算排名,赋值为新字段rankall。
NLC:排名 计算式(len(客户)) 降序, 订单金额; 命名 rankall。
参数:命名 <排名的新列名>
需要将排名写入新列时,应使用本参数。非必要参数;类型是字段标识;参数名不能省略。注意,本参数和后面的参数过滤不能同时使用;不使用本参数时,必须用后面的参数过滤来返回部分记录,不改变表结构。
例子:
对订单例子表(焦点表)按原序计算排名,赋值为新字段"行字段"(相当于对行号列#进行显式命名)
NLC:排名 命名 行字段
参数:选项
遇到重复值时,有几种规则用来区分名次是否重复,是否占用新值的名次。必要参数,默认值是美式;类型是枚举;参数名必须省略,参数值不能省略。各枚举值如下:
- 自然:没有重复名次,[10,10,20,25,30,30]的标准排名是[1,2,3,4,5,6]。前4名即[10,10,20,25]
- 美式:重复值用重复名次,但会占用新值的名次,[10,10,20,25,30,30]的美式排名是[1,1,3,4,5,5]。前4名是[10,10,20,25]
- 中式:重复值用重复名次,不占用新值的名次,[10,10,20,25,30,30]的中式排名是[1,1,2,3,4,4]。前4名是[10,10,20,25,30,30]。
例子:
按订单金额进行排名,中式规则,命名为金额排名。
NLC:排名 订单金额; 命名 金额排名; 美式
参数:过滤 过滤数量
这两个参数通常一起用,表示对排名结果进行过滤,只返回部分记录,即前N名、后N名、最大一名、最小一名。
其中,参数过滤是过滤的方向,非必要参数;类型为枚举;参数名必须省略,参数值不能省略。使用参数命名时,不能使用本参数,也就是按排名过滤和将排名写入新列只能二选一。4个枚举值如下:
- 前、后:前N名或后N名,必须和参数过滤数量一起用
- 最大、最小:最大值对应的记录、最小值对应的记录。注意,最大最小时相当于固定了参数方向的值,所以可以省略参数方向;最大(最小同理)对应的记录有可能是多条,即最大值相同,此时要根据参数过滤数量来返回,如果过滤数量是1,则只返回第1条,如果没有过滤数量这个参数,则返回最大值对应的每条记录。最小同理。
其中,参数过滤数量是过滤的名次(最前、后而言)或条数(对最大、最小而言),必要参数,缺省值是1;类型是整数或整数标识;参数名必须省略,参数值不能省略。
例子:
焦点表按订单金额排名,取最大值对应的所有的记录
NLC:排名 订单金额; 最大
例子:
焦点表按订单金额排名,取第1名对应的记录
NLC:排名 订单金额; 前 //默认规则(选项)是美式。
例子:
焦点表按订单金额的逆序排名,按中式规则取前10名对应的记录。
NLC:排名 订单金额;逆序; 中式;前;10
参数:[删除]
使用过滤参数时,默认是按排名选出符合条件的记录,如果使用本参数,则表示按排名删除符合条件的记录。非必要参数;类型是布尔;参数名不能省略,参数值必须省略。
例子:
焦点表按订单金额的逆序排名,按中式规则删除前10名对应的记录。
NLC:排名 订单金额;逆序; 中式;前;10; 删除
参数:分区
按分区进行排名,各区之间互不影响,概念上类似SQL的PARTITION BY。非必要参数;标识类型;参数名不能省略,参数值必须省略。
例子:
订单例子表已按金额升序排序,现在要取每个客户的订单金额的后3名(相当于取每个客户订单金额最大的3名)
NLC:排名 订单金额; 后; 3; 分区 客户