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 |
