7.8 关联查询:多表序号对位
将 4 个相关联的表按序号对位连接后,分组计算平均值。
根据相互关联的订单表、支付表、产品信息表和评价表,查询 2014 年未使用分期付款支付的订单中,各类产品的平均评分。
使用 join() 函数的 @p 选项,按位置进行连接。
脚本:
A | |
---|---|
1 | =connect(“demo”) |
2 | =A1.query(“select * from Order order by ID”) |
3 | =A1.query(“select * from Payment order by ID”) |
4 | =A1.query(“select * from Evaluation order by ID”) |
5 | =A1.query@x(“select * from Product”) |
6 | =A2.switch(ProductID, A5:ID) |
7 | =join@p(A6:Order;A3:Payment;A4:Evaluation) |
8 | =A7.select(year(Order.Date)==2014 && !Payment.Instalments) |
9 | =A8.groups(Order.ProductID.Category; avg(Evaluation.Score):Score) |
A1 连接数据库
A2 查询订单表
A3 查询支付表
A4 查询评价表
A5 查询产品表
A6 使用 switch 函数将产品 ID 转换为对应的产品记录
A7 使用 join@p 函数将三个表按位置进行连接
A8 选出 2014 年未使用分期付款的订单
A9 分组汇总不同产品类别的平均评分
运行结果:
Category | Score |
---|---|
Electric appliance | 3.98 |
Fruits | 3.86 |
… | … |