7.28 Apply 运算的复杂用法
将 3 个表的数据关联连接,生成新序表后分组汇总。
根据相互关联的员工收入表、订单表和订单明细表,为单笔订单的实际金额超过 1000 的销售人员,给予订单金额 5% 的业绩奖励。
使用 A.news() 函数进行连接和计算。
脚本:
A | |
---|---|
1 | =connect(“db”) |
2 | =A1.query(“select * from Order where year(Date)=2014”) |
3 | =A1.query(“select * from Detail”) |
4 | =A1.query@x(“select * from Employee”) |
5 | =A2.switch(EmployeeID,A4:ID) |
6 | =A3.group(ID) |
7 | =A6.news(A2.select(ID:A6.~.ID); EmployeeID,(s=sum(Amount*(1-Discount)), if(s>1000, s*1.05, s)):Amount) |
8 | =A7.groups(EmployeeID.Name:Name; sum(Amount):Amount) |
A1 连接数据库
A2 查询订单表 2014 年数据
A3 查询订单明细表
A4 查询员工表
A5 使用 switch 函数,将订单表的员工 ID 转换成对应记录
A6 订单明细表对订单 ID 分组
A7 使用 news 函数,将订单明细表按照订单 ID 与订单表进行连接,并计算出每笔订单的实际业绩
A8 分组汇总每位员工的总销售业绩
运行结果:
Name | Amount |
---|---|
Alexis | 358882.02 |
Emily | 432435.85 |
… | … |