7.24 同序数据表和大维表的快速关联查询
两个游标和有序集文件的快速关联查询,要求游标对第一个连接字段有序。
根据相互关联的订单表、退货表和产品信息表,查询 2015 年各类产品的退货总金额。
使用 cs.joinx() 函数连接文件,当游标对第一个连接字段有序时可以使用 @c 选项提速,@c 选项可以和 @q 选项同时使用。
脚本:
A | |
---|---|
1 | =file(“Returns.btx”).cursor@b().select(year(Date)==2015) |
2 | =file(“Order.btx”) |
3 | =file(“Product.btx”) |
4 | =A1.joinx@qc(OrderID,A2:ID,Amount;ProductID,A3:ID,Category) |
5 | =A4.groups(Category; sum(Amount)) |
A1 创建订单明细表游标
A2 创建订单表集文件对象
A3 创建产品表集文件对象
A4 使用 cs.joinx 函数按订单 ID 连接订单表,按产品 ID 连接产品表,@qc 选项同时使用进行提速
A5 分组汇总各类产品的退货金额
运行结果:
Category | Amount |
---|---|
Electric appliance | 1854.5 |
Fruits | 251.5 |
… | … |