12.2 较大集合的包含性检测

 

在一个表中,根据较大集合的包含性判断来查找记录。
在销售表中,统计 2014 年大客户的每月销售额。

ID Customer SellerId Date Amount
10400 EASTC 1 2014/01/01 3063.0
10401 HANAR 1 2014/01/01 3868.6
10402 ERNSH 8 2014/01/02 2713.5
10403 ERNSH 4 2014/01/03 1005.9
10404 MAGAA 2 2014/01/03 1675.0

当常数项超过 10 个时,可以对常数序列排序,再使用 A.contain() 函数的 @b 选项,进行二分法查找。

脚本:

A
1 =connect(“db”).query@x(“select * from Sales”)
2 =[“SAVEA”,“QUICK”,“ERNSH”,“HUN”,“RATTC”,“HANAR”,“FOLKO”,“QUEEN,MEREP”,“WHITC”,“FRANK”,“KOENE”].sort()
3 =A1.select(year(Date)==2014 && A2.contain@b(Customer))
4 =A3.groups(month(Date):Month; sum(Amount):Amount)

A1 连接数据库并查询销售表
A2 创建大客户的常数序列并排序
A3 选出 2014 年的大客户记录
A4 分组汇总每月的销售额

运行结果:

Month Amount
1 16947.3
2 27793.3
3 14602.7