A.news( X;xi:Fi,… )

阅读(850) 标签: 合并, 生成,

描述:

针对序列的每个成员,按照指定条件生成多条记录,合并组成新的序表。

语法:

A.news(X;xi:Fi,…)

备注:

针对序列A的每个成员,与序列/整数X经过计算表达式xi后生成多条记录,合并组成新的序表。

参数:

A

序列。

X

序列/整数;X为整数时 可理解为to(X)相当于对A计算了X次。

xi

表达式,结果为字段值,xi中的~针对X而非A

Fi

结果序表的字段名,缺省为xi,当xi#i时使用原列名。

选项:

@1

左连接,当X为空时创建一条空记录。注意是数字1

@m

并行计算提升性能。

返回值:

序表

示例:

A为序列:

 

A

 

1

[1,2,3,4,5]

 

2

=A1.news([10,20]; A1.~:a,~:b,a*b)

X为序列时,对AX的成员逐一进行计算,将A1的成员作为字段a的值,[10,20]的成员作为字段b的值,第3列为a*b的结果值, Fi缺省直接参数xi用作为字段名:

3

=A1.news(2; A1.~:a, ~:b,a*b)

X为整数时,相当于to(2),依次对A1的成员计算2次:

A为序表:

 

A

 

1

=demo.query("select top 5 ID,NAME,BIRTHDAY,DEPT,SALARY from EMPLOYEE")

2

=A1.news(~;NAME,age(BIRTHDAY):AGE)

X为序表,~理解为A1,计算A1序表,返回的记录中含有字段NAMEAGEAGE是根据A1的字段BIRTHDAY计算而来:

3

=A1.news(3;EID,NAME,SALARY*~:Salary)

X为整数3,对A1的成员分别计算三次,其中~可理解为当前计算次数:

A为排列:

 

A

 

1

=demo.query("select top 10 EID,NAME,DEPT,GENDER,SALARY from EMPLOYEE")

2

=A1.group(DEPT).(~.group(GENDER))

A1序表根据DEPT分组,然后再继续根据GENDER分组:

3

=A2.news(~;A2.~.DEPT,A2.~.~.GENDER,A2.~.~.avg(SALARY):AvgSalary)

取出A2分组中的DEPTGENDER值,计算各个DEPTGENDER的平均工资:

参数xi中用#i

 

A

 

1

=demo.query("select  top 10  EID,NAME,BIRTHDAY,GENDER,SALARY from EMPLOYEE")

2

=A1.group(GENDER;~:GenderGroup,~.avg(SALARY):Avg)

A1根据GENDER做分组,并计算每组平均工资:

3

=A2.news(GenderGroup;EID,#2,GENDER, age(~.BIRTHDAY):age,SALARY+1000:Nsalary,A2.Avg:AvgSalary)

针对A2每组计算表达式,生成记录合并成一个新序表,其中#2表示GenderGroup中的第2个字段,即NAME

使用@1选项,左连接:

 

A

 

1

=demo.query("select top 5 EID,NAME,BIRTHDAY,GENDER,SALARY from EMPLOYEE")

2

=A1.group(GENDER;~:GenderGroup)

A1根据GENDER对记录做分组:

3

=demo.query("select top 10 EID,NAME,BIRTHDAY,GENDER,SALARY from EMPLOYEE")

4

=A3.group(GENDER;avg(SALARY):avg)

A3根据GENDER分组,计算每组的平均工资:

5

=A4.join(GENDER,A2:GENDER,GenderGroup)

A2A4根据GENDER字段连接,由于A2中没有GENDERM的对应数据,所以表连接后,对应的GenderGroup字段值为null

6

=A5.news(GenderGroup;EID,NAME,GENDER,age(~.BIRTHDAY):age,avg:AvgSalary)

对排列A5计算表达式后生成的记录,默认丢弃GenderGroup为空的记录:

7

=A5.news@1(GenderGroup;EID,NAME,GENDER,age(~.BIRTHDAY):age,avg:AvgSalary)

使用@1参数,当排列X为空时,创建一条空记录:

相关概念:

cs.news()