6.14 按段分组:按表达式分段
根据表达式的计算结果,将记录分段分组并汇总计算平均值。
根据员工表,按入职时间 10 年以下,10~20 年和 20 年以上分组,并统计每组的平均工资。
ID | NAME | HIREDATE | SALARY |
---|---|---|---|
1 | Rebecca | 2005-03-11 | 7000 |
2 | Ashley | 2008-03-16 | 11000 |
3 | Rachel | 2010-12-01 | 9000 |
4 | Emily | 2006-08-15 | 7000 |
5 | Ashley | 2004-07-30 | 16000 |
… | … | … | … |
在对位函数 align(n,y) 中,可以使用 pseg(x,y) 函数进行分段。
脚本:
A | |
---|---|
1 | =connect(“db”) |
2 | =A1.query@x(“select * from EMPLOYEE”) |
3 | [0,10,20] |
4 | =now() |
5 | =A2.align@a(A3.len(),A3.pseg(elapse@y(A4,-~), HIREDATE)) |
6 | =A5.new(A3(#):EntryYears,~.avg(SALARY):AvgSalary) |
A1 连接数据库
A2 查询员工表
A3 定义入职年限区间
A4 获取当前日期时间
A5 使用 pseg 函数获取入职时间所在区间
A6 统计每组的平均工资
运行结果:
EntryYears | AvgSalary |
---|---|
0 | 6777.78 |
10 | 7445.53 |
20 | 6928.57 |