7.28 Apply 运算的复杂用法

 

将 3 个表的数据关联连接,生成新序表后分组汇总。
根据相互关联的员工收入表、订单表和订单明细表,为单笔订单的实际金额超过 1000 的销售人员,给予订单金额 5% 的业绩奖励。

imagepng

使用 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