1.15 分组:组内筛选前 N 名 / 后 N 名不产生子集

 

使用 groups() 函数分组,采用累计方式计算,过程中不产生子集。这种运算方式效率更高,如果分组子集不需要复用,建议采取这种运算方式。

以雇员表为例,求每个部门薪水前三高的员工信息。

EID NAME DEPT SALARY
1 Rebecca R&D 7000
2 Ashley Finance 11000
3 Rachel Sales 9000
4 Emily HR 7000
5 Ryan R&D 13000

脚本:

A
1 =connect(“db”)
2 =A1.query@x(“select * from EMPLOYEE”)
3 =A2.groups(DEPT; top(-3;SALARY):TopSalary)
4 =A3.(TopSalary).conj()

A1 连接数据库
A2 查询雇员表
A3 按部门分组并取出每组薪水前三的记录
A4 把各部门薪水前三的记录合并

运行结果:

EID NAME DEPT SALARY
20 Alexis Administration 16000
42 Michael Administration 12000
18 Jonathan Administration 7000
2 Ashley Finance 11000
32 Andrew Finance 11000