3.2 两个集合的交集
集合 A 和 B 的交集是指由所有属于集合 A 且属于集合 B 的成员所组成的集合。比如集合 [1,2,3] 与[1,3,5]的交集,是集合[1,3]。
某商家有网店和实体店铺两种销售渠道,其销售数据分别存储在 SALES_ONLINE 和 SALES_STORE 两个表中。现在要查询 2014 年在网店和实体店都有消费的客户有哪些。部分数据如下:
SALES_ONLINE:
ID | CUSTOMERID | ORDERDATE | PRODUCTID | AMOUNT |
---|---|---|---|---|
1 | HANAR | 2014/01/01 | 17 | 3868.6 |
2 | ERNSH | 2014/01/03 | 42 | 1005.9 |
3 | LINOD | 2014/01/06 | 64 | 400.0 |
4 | OTTIK | 2014/01/07 | 10 | 1194.0 |
5 | OCEAN | 2014/01/09 | 41 | 319.2 |
… | … | … | … | … |
SALES_STORE:
ID | CUSTOMERID | ORDERDATE | SELLERID | PRODUCTID | AMOUNT |
---|---|---|---|---|---|
1 | EASTC | 2014/01/01 | 1 | 27 | 3063.0 |
2 | ERNSH | 2014/01/02 | 8 | 70 | 2713.5 |
3 | MAGAA | 2014/01/03 | 2 | 74 | 1675.0 |
4 | SAVEA | 2014/01/07 | 7 | 45 | 2018.2 |
5 | FOLIG | 2014/01/08 | 8 | 30 | 1622.4 |
… | … | … | … | … | … |
SPL 中可以使用符号 "^" 来计算集合的交集。比如 A^B 就是集合 A 与集合 B 的交集。
脚本:
A | |
---|---|
1 | =T(“SalesOnline.xlsx”).select(year(ORDERDATE)==2014) |
2 | =T(“SalesStore.xlsx”).select(year(ORDERDATE)==2014) |
3 | =A1.id(CUSTOMERID)^A2.id(CUSTOMERID) |
A1:从文件中导入线上销售表,并选出 2014 年的销售记录。
A2:从文件中导入实体店销售表,并选出 2014 年的销售记录。
A3:使用函数 A.id() 计算客户 ID 的唯一值集合。再使用符号 "^" 计算两个集合的交集,即在网店和实体店都有消费的客户。