本章节介绍ptop()函数的用法。
描述:
序列成员根据x排序后获取前n个成员在原序列中的序号。
语法:
A.ptop(n ,x)
备注:
针对序列A的每个成员计算表达式x,…,排序后返回前n个成员在A中的序号组成的序列。
n>0时升序排序,n<0时降序排序,n为0时返回null,n不可省略。
参数:
A |
序列。 |
x |
排序表达式,x,…省略解释为~ 。 |
n |
整数,不可省略,n为0时返回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根据DEPT、age(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] |
相关概念: