首页 > IT职业 > IT职场 > 结构化数据上的选出运算
【例 1】 分栏列出欧洲和非洲人口超 200 万的城市名称及人口(每栏按从多到少排序)。世界城市人口表部分数据如下:
| Continent | Country | City | Population |
| Africa | Egypt | Cairo | 6789479 |
| Asia | China | Shanghai | 24240000 |
| Europe | Britain | London | 7285000 |
| … | … | … | … |
期望结果如下:
| Europe City | Population | Africa City | Population |
| Moscow | 8389200 | Cairo | 6789479 |
| London | 7285000 | Kinshasa | 5064000 |
| St Petersburg | 4694000 | Alexandria | 3328196 |
| … | … | … | … |
【SPL 脚本】

A4的执行结果如下:
| Europe City | Population | Africa City | Population |
| Moscow | 8389200 | Cairo | 6789479 |
| London | 7285000 | Kinshasa | 5064000 |
| St Petersburg | 4694000 | Alexandria | 3328196 |
| … | … | … | … |
【例 2】 查询纽约研发部门员工的全名和收入。部分数据如下:
| ID | NAME | SURNAME | STATE | DEPT | SALARY |
| 1 | Rebecca | Moore | California | R&D | 7000 |
| 2 | Ashley | Wilson | New York | Finance | 11000 |
| 3 | Rachel | Johnson | New Mexico | Sales | 9000 |
| 4 | Emily | Smith | Texas | HR | 7000 |
| 5 | Ashley | Smith | Texas | R&D | 16000 |
| … | … | … | … | … | … |
【SPL 脚本】

A4的执行结果如下:
| FULLNAME | SALARY |
| Matthew Johnson | 6000 |
| Lauren Thomas | 12000 |
| Brooke Williams | 12000 |
【例 3】 查询各部门 30 岁以下和 50 岁以上的员工的人数。部分数据如下:
| ID | NAME | BIRTHDAY | STATE | DEPT | SALARY |
| 1 | Rebecca | 1974/11/20 | California | R&D | 7000 |
| 2 | Ashley | 1980/07/19 | New York | Finance | 11000 |
| 3 | Rachel | 1970/12/17 | New Mexico | Sales | 9000 |
| 4 | Emily | 1985/03/07 | Texas | HR | 7000 |
| 5 | Ashley | 1975/05/13 | Texas | R&D | 16000 |
| … | … | … | … | … | … |
【SPL 脚本】

A4的执行结果如下:
| DEPT | Count |
| 4 | 9 |
| 5 | 5 |
| 6 | 3 |
| 7 | 6 |
| 8 | 1 |
【例 4】 根据成绩表,求一班数学成绩最低的学生 ID。部分数据如下:
| CLASS | STUDENTID | SUBJECT | SCORE |
| Class one | 1 | English | 84 |
| Class one | 1 | Math | 77 |
| Class one | 1 | PE | 69 |
| Class one | 2 | English | 81 |
| Class one | 2 | Math | 80 |
| … | … | … | … |
【SPL 脚本】

最小值所在记录不一定是唯一的,如果想返回所有记录,可以使用函数 A.minp() 的选项 @a :

A3的执行结果如下:
| CLASS | STUDENTID | SUBJECT | SCORE |
| Class one | 5 | Math | 60 |
| Class one | 14 | Math | 60 |
A4的执行结果如下:
| Member |
| 5 |
| 14 |
【例 5】 根据奥运会奖牌榜统计表,求总成绩蝉联第一名届数最长的国家。部分数据如下:
| Game | Nation | Gold | Silver | Copper |
| 30 | USA | 46 | 29 | 29 |
| 30 | China | 38 | 27 | 23 |
| 30 | UK | 29 | 17 | 19 |
| 30 | Russia | 24 | 26 | 32 |
| 30 | Korea | 13 | 8 | 7 |
| … | … | … | … | … |
【SPL 脚本】

A5的执行结果如下:
| Game | Nation | Gold | Silver | Copper |
| 10 | USA | 41 | 32 | 30 |
| 9 | USA | 22 | 18 | 16 |
| 8 | USA | 45 | 27 | 27 |
| 7 | USA | 41 | 27 | 28 |
有时候我们需要通过计算数值在区间中的序号,来获取在集合中的对应成员。比如根据考试成绩返回评价(优、良、中、差);根据家庭年收入返回家庭所处的资产等级(贫困、小康、中产、富裕等)。
【例 6】 根据成绩表,统计英语科目优秀、及格和不及格的人数。部分数据如下:
| CLASS | STUDENTID | SUBJECT | SCORE |
| Class one | 1 | English | 84 |
| Class one | 1 | Math | 77 |
| Class one | 1 | PE | 69 |
| Class one | 2 | English | 81 |
| Class one | 2 | Math | 80 |
| … | … | … | … |
【SPL 脚本】

A4的执行结果如下:
| Assessment | Count |
| excellent | 6 |
| fail | 4 |
| pass | 18 |
【例 7】 根据成绩表,求各班各科前两名的学生 ID。部分数据如下:
| CLASS | STUDENTID | SUBJECT | SCORE |
| Class one | 1 | English | 84 |
| Class one | 1 | Math | 77 |
| Class one | 1 | PE | 69 |
| Class one | 2 | English | 81 |
| Class one | 2 | Math | 80 |
| … | … | … | … |
【SPL 脚本】

A4的执行结果如下:
| CLASS | STUDENTID | SUBJECT | SCORE |
| Class one | 4 | English | 96 |
| Class one | 9 | English | 93 |
| Class one | 13 | Math | 97 |
| Class one | 10 | Math | 97 |
| … | … | … | … |
根据主键值查找对应记录是很常见的操作,例如根据员工 ID 查找员工记录,根据订单 ID 查询订单详细信息等等。
【例 8】 根据相互关联的课程表和选课表,列出所有学生所选课程信息表,每个科目作为一列。课程表部分数据如下:
| ID | NAME | TEACHERID |
| 1 | Environmental protection and … | 5 |
| 2 | Mental health of College Students | 1 |
| 3 | Computer language Matlab | 8 |
| … | … | … |
选课表部分数据如下:
| ID | STUDENT_NAME | COURSE |
| 1 | Rebecca | 2,7 |
| 2 | Ashley | 1,8 |
| 3 | Rachel | 2,7,10 |
| … | … | … |
希望转换成如下表格:
| ID | STUDENT_NAME | COURSE1 | COURSE2 | COURSE3 | … |
| 1 | Rebecca | Mental health of College Students | Into Shakespeare |
|
… |
| 2 | Ashley | Environmental protection and … | Modern economics |
|
… |
| 3 | Rachel | Mental health of College Students | Into Shakespeare | Music appreciation | … |
| … | … | … | … | … | … |
【SPL 脚本】

A6的执行结果如下:
| ID | STUDENT_NAME | COURSE1 | COURSE2 | COURSE3 |
| 1 | Rebecca | Mental health of College Students | Into Shakespeare |
|
| 2 | Ashley | Environmental protection and … | Modern economics |
|
| 3 | Rachel | Mental health of College Students | Into Shakespeare | Music appreciation |
| … | … | … | … | … |
《 SPL CookBook》中还有更多相关计算示例。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/31543054/viewspace-2734233/ ,如需转载,请注明出处,否则将追究法律责任。