5.3 用主表过滤子表

SQL

SELECT City,ProductID, sum(Amount) Amount
FROM Customers
INNER JOIN Orders2021 ON Orders2021.CustomerID= Customers.CustomerID
WHERE Customers.Region='Sp'
GROUP BY City,ProductID

SPL
当过滤后的订单记录较少时,可以采取主表过滤子表的做法,即先过滤主表,然后用主表的主键在子表中快速定位并关联输出游标。

A
1 =file(“Customers.ctx”).open().cursor(CustomerID, City; Region==“SP”)
2 =file(“Orders2021_Account.ctx”).open().news(A1,Amount,ProductID,City)
3 =A2.groups(City,ProductID; sum(Amount):Amount)

A1 读主表文件,产生游标,游标中过滤
A2 读子表文件,用 news 关联主表游标,关联时按主表的主键过滤,并引用主表的字段 ShipVia,返回游标


SQL

SELECT City, sum(Amount) Amount
FROM Customers
INNER JOIN Orders2021 ON Orders2021.CustomerID= Customers.CustomerID
WHERE Customers.Region='Sp'
GROUP BY City

SPL

A
1 =file(“Customers.ctx”).open().cursor(CustomerID, City; Region==“SP”)
2 =file(“Orders2021_Account.ctx”).open().news@r(A1,sum(Amount):Amount,City)
3 =A2.groups(City; sum(Amount):Amount)

A2 本例只需要按 City 聚合,而 City 是由 CustomerID 决定的,所以关联的时候可以用 @r 选项先聚合子表,这样可以少产生一些记录

以下是广告时间

对润乾产品感兴趣的小伙伴,一定要知道软件还能这样卖哟性价比还不过瘾? 欢迎加入好多乾计划。
这里可以低价购买软件产品,让已经亲民的价格更加便宜!
这里可以销售产品获取佣金,赚满钱包成为土豪不再是梦!
这里还可以推荐分享抢红包,每次都是好几块钱的巨款哟!
来吧,现在就加入,拿起手机扫码,开始乾包之旅



嗯,还不太了解好多乾?
猛戳这里
玩转好多乾