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:使用符号“%”计算上下两个学期的异或集。