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 |
… | … |