列方向汇总

举例

有 Excel 文件 Book1.xlsx,数据如下所示:

class

name

Math

English

PE

one

Jack

89

78

83


Tom

90

60

99


Jerry

76

88

62


Kate

66

90

85

two

Jim

87

60

76


Alice

100

99

97


Rebecca

75

76

88

three

Cindy

63

80

72


Kitty

82

50

74


Lucy

40

100

63

现在需要从三个班的某次测试成绩,汇总出各班的人数、所有学科(包含数学、英语、体育)的总成绩:

calss

num

total

one

4

966

two

3

758

three

3

624

编写 SPL 脚本:

方法1:结构化数据


A

1

=file("Book1.xlsx").xlsimport@t()

2

=A1.groups@i(class;count(1):num,sum(~.array().to(3,).sum()):total)

3

=file("result.xls").xlsexport@t(A2)

A1   读取 Excel 数据

A2  按班级分组,计算每个班级的人数 num,所有学科(3 至 5 列)的总成绩 total,其中${to(3,5).("#"/~).concat("+")}拼出串:#3+#4+#5

A3  将结果 A2 导出至 result.xlsx

方法2:二维数组


A

1

=file("Book1.xlsx").xlsimport@w(;,2:)

2

=A1.groups@i(~(1):calss;count(1):num,sum(~.to(3,).sum()):total)

3

=file("result.xls").xlsexport@t(A2)

A1   读取 Excel 数据,从第二行开始读,读成一个二维数组

A2  按班级(第一列)分组,求每个班级的人数 num,所有学科(第三列往后)的总成绩 total

A3  将结果 A2 导出至 result.xlsx