3.5 两个集合的异或集
有集合 A 和 B,属于 A 或 B,但不同时属于 A 和 B 的成员的集合称为 A 和 B 的异或集。比如集合 [1,2,3] 与[1,3,5]的异或集,是集合[2,5]。
两个学期的成绩分别保存在不同的表中,查询一班上下学期只有一次进入总分前 10 名的学生。部分数据如下:
上学期 SCORES1:
CLASS | STUDENTID | SUBJECT | SCORE |
---|---|---|---|
1 | 1 | English | 84 |
1 | 1 | Math | 77 |
1 | 1 | PE | 69 |
1 | 2 | English | 81 |
1 | 2 | Math | 80 |
… | … | … | … |
下学期 SCORES2:
CLASS | STUDENTID | SUBJECT | SCORE |
---|---|---|---|
1 | 1 | English | 97 |
1 | 1 | Math | 64 |
1 | 1 | PE | 97 |
1 | 2 | English | 56 |
1 | 2 | Math | 82 |
… | … | … | … |
SPL 中可以使用符号“%”来计算集合的异或集。比如 A%B 就是集合 A 与集合 B 的异或集。
脚本:
A | |
---|---|
1 | =T(“Scores1.xlsx”) |
2 | =T(“Scores2.xlsx”) |
3 | =A1.groups(STUDENTID; sum(SCORE):SCORE) |
4 | =A2.groups(STUDENTID; sum(SCORE):SCORE) |
5 | =A3.top(-10;SCORE).(STUDENTID) |
6 | =A4.top(-10;SCORE).(STUDENTID) |
7 | =A5%A6 |
A1:从文件中导入上学期成绩表。
A2:从文件中导入下学期成绩表。
A3:上学期成绩表按学生 ID 分组汇总每个学生的总分数。
A4:下学期成绩表按学生 ID 分组汇总每个学生的总分数。
A5:选出上学期总分前 10 名的学生 ID。
A6:选出下学期总分前 10 名的学生 ID。
A7:使用符号“%”计算上下两个学期的异或集。