【摘要】
从数据表中选出数据时,有时需要判断成员是否从属于某一个集合。例如从房价表中选出重要城市的房价信息,从销售表中选出 VIP 客户的销售记录等等。如何简便快捷的处理结构化数据中的从属判断问题,这里为你全程解析,并提供 esProc 示例代码。结构化数据中的从属判断问题
1. 集合包含性检测
在一个表中,根据集合的包含性判断查找记录。
【例 1】 在员工表中,统计一线城市各部门的平均工资。部分数据如下:
ID | NAME | CITY | SALARY |
1 | Rebecca | Tianjin | 7000 |
2 | Ashley | Tianjin | 11000 |
3 | Rachel | Shijiazhuang | 9000 |
4 | Emily | Shenzhen | 7000 |
5 | Ashley | Nanjing | 16000 |
… | … | … | … |
【解题思路】
从员工表选出数据时,需要判断员工的所在城市是否从属于由北京、上海、广州、深圳组成的常数集合。当集合的成员数小于 10 个时,可以使用函数 A.contain() 进行过滤。
【SPL 脚本】
A | B | |
1 | =connect("db").query("select * from Employee") | /连接数据库并查询员工表 |
2 | [Beijing, Shanghai, Guangzhou, Shenzhen] | /创建一线城市的常数集合 |
3 | =A1.select(A2.contain(CITY)) | /使用函数 A.contain() 选出所在城市包含在一线城市中的记录。 |
4 | =A3.groups(DEPT; avg(SALARY):SALARY) | /分组汇总各部门的平均工资 |
A4的执行结果如下:
DEPT | SALARY |
Finance | 7833.33 |
HR | 7187.5 |
Marketing | 7977.27 |
… | … |
在一个表中,根据较大集合的包含性判断来查找记录。
【例 2】 在销售表中,统计 2014 年大客户的每月销售额。部分数据如下:
ID | Customer |