6.22 分组子集:对子集过滤,再对选出子集进一步分组

 

选出员工人数超过 50 人的州,查询这些州各部门的平均工资。

ID NAME BIRTHDAY STATE DEPT SALARY
1 Rebecca 1974/11/20 California R&D 7000
2 Ashley 1980/07/19 New York Finance 11000
3 Rachel 1970/12/17 New Mexico Sales 9000
4 Emily 1985/03/07 Texas HR 7000
5 Ashley 1975/05/13 Texas R&D 16000

分组本身是复杂运算,保留分组子集可重复使用,提高运行效率。函数 A.group() 在分组后可以保留分组子集,可以针对分组子集再次进行分组汇总等运算。

脚本:

A
1 =T(“Employee.csv”)
2 =A1.group(STATE).select(~.len()>50)
3 =A2.conj(~.groups(DEPT; avg(SALARY):AVG_SALARY).derive(A2.~.STATE:STATE))

A1 导入员工表。
A2 按州进行分组,并选出员工数大于 50 人的分组子集。
A3 对每个州的分组子集再按部门分组汇总平均工资,再把这些结果集合并。