ptop()

阅读(2213) 标签: 排序, 序号,

本章节介绍ptop()函数的用法。

A.ptop()

描述:

序列成员根据x排序后获取前n个成员在原序列中的序号

语法:

A.ptop(n ,x)

备注:

针对序列A的每个成员计算表达式x,…,排序后返回前n个成员在A中的序号组成的序列。

n>0时升序排序,n<0时降序排序,n0时返回nulln不可省略

参数:

A

序列。

x

排序表达式,x,…省略解释为~

n

整数,不可省略,n0时返回null

选项:

@1

n为±1时返回单值。

@0

不忽略null,缺省忽略null

@r

采用美式排序,即并列名次占用名次。

@i

采用中式排序,即并列名次不占用名次。

返回值:

序列

示例:

 

A

 

1

=connect("demo").query("select top 10 NAME,DEPT,HIREDATE from employee")

2

=A1.ptop(3,DEPT,age(HIREDATE))

序表A1根据DEPTage(HIREDATE)升序排序后,获取前3个成员在A1中的序号组成的序列,返回结果如下:

3

=A1.ptop(-2,HIREDATE)

序表A1根据HIREDATE降序排序后,获取前2个成员在A1中的序号组成的序列,返回结果如下:

使用@1选项, n为±1时返回单值

 

A

 

1

[c,e,a,f,d,b]

 

2

=A1.ptop(1)

返回A1中最小成员序号组成的序列:

3

=A1.ptop@1(1)

使用@1选项,返回A1中最小成员序号:

4

=A1.ptop@1(-1)

使用@1选项,n-1,返回A1中最大成员序号:

使用@0选项, 不忽略null

 

A

 

1

[c,e,a,null,d,b]

 

2

=A1.ptop(3)

A1成员升序排序后,获取前3个成员在A1中的序号组成的序列,缺省忽略null,结果返回:[3,6,1]

3

=A1.ptop@0(3)

使用@0选项,不忽略null,结果返回[4,3,6]

使用@r/@i选项,对于序列中存在重复成员时排序方式不同:

 

A

 

1

[a,a,b,b,b,c,c,c,d]

返回存在重复成员的序列。

2

=A1.ptop(3)

默认采用连续排名方式,取前3个最小成员在A1中的序号组成的序列:[2,1,5]

3

=A1.ptop@r(3)

使用@r选项,采用美式排名,即并列名次占用名次,相当于排序后名次为[1,1,3,3,3,6,6,8],返回结果为:[2,1,3,4,5]

4

=A1.ptop@i(3)

使用@r选项,采用中式排名,即并列名次不占用名次,相当于排序后名次为[1,1,2,2,2,3,3,4],返回结果为:[2,1,5,4,3,6,7]

 

相关概念:

A.pos()

A.sort()

A.pos(x)

A.psort()

A.top()