我们在数据计算中同样经常需要将数据表中的记录按需要排序。如:
|
A |
1 |
=demo.query("select EID,NAME,SURNAME,GENDER, BIRTHDAY from EMPLOYEE where EID<6") |
2 |
=A1.sort(NAME+" "+SURNAME) |
3 |
=A1.sort(BIRTHDAY) |
4 |
=A1.sort@z(age(BIRTHDAY)) |
A1中取出了部分员工的资料如下:
在A2中将记录按照员工全名排序,结果如下:
A3中根据生日将记录排序,结果如下:
A4中根据年龄将记录降序排序,结果如下:
可以发现,使用sort函数,可以很方便地将序表或排列中的记录按需要排序,生成排列后返回。
我们来看A2中的结果,排序的结果是按照全名处理的,但是我们往往需要先将员工资料按照姓排名,同姓的再按照名字排序。这时,需要使用多字段排序:
|
A |
1 |
=demo.query("select EID,NAME,SURNAME,GENDER, BIRTHDAY from EMPLOYEE") |
2 |
=A1.sort(SURNAME,NAME) |
3 |
=A1.sort(GENDER,-SURNAME,-NAME) |
这里,A1中取出所有员工的资料如下:
在A2中,先根据SURNAME排序,再根据NAME排序,结果如下:
在上一节的内容中,我们了解到在使用sort,psort,rank,ranks等函数,可以添加@z选项来调整排序顺序。在用sort函数执行多字段排序时,由于各个字段的排序顺序不一定相同,因此不能使用@z选项,但可以在需要逆序排序的表达式前添加负号。如A3中的表达式,GENDER表示按性别升序排序,-SURNAME表示按姓降序排序,如果未添加标记,则表示升序排序。A3中的排序结果如下:
在将记录排序时,如果使用了非英文字符串,也可以在sort函数中添加语言参数。
在将序表中的记录排序时,有时我们只需要得到排在前几位的数据,此时可以使用top函数或者ptop函数。如:
|
A |
1 |
=demo.query("select EID,NAME,SURNAME,GENDER, BIRTHDAY from EMPLOYEE") |
2 |
=A1.top(5,age(BIRTHDAY)) |
3 |
=A1.ptop(5,age(BIRTHDAY)) |
4 |
=A1.top(5,age(BIRTHDAY),~) |
5 |
=A1.top(-5,age(BIRTHDAY)) |
A2中用top函数计算出最小的5个年龄,A3中用ptop函数计算出年龄最小的5位员工的序号。A4中用top函数取出年龄最小的5位员工数据,其中第3个参数~表示返回A1中的原记录。 A2,A3和A4中结果如下:
在top和ptop函数中,不能使用@z选项,如果需要计算最大的5个年龄,可以在函数参数中使用负数,如A5中的-5表示取出年龄最大的5个数据,结果如下: