news()

阅读(1865) 标签: news,

本章介绍news()函数的多种用法。

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

描述:

计算序表/排列的字段值合并生成新序表/排列。

语法:

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

备注:

根据序表/排列A,计算排列X后把计算后的字段合并到一个新的序表/排列,Fi为新字段名,xi为计算结果Fi省略时会自动根据xi识别字段名(当参数xi使用#i时,表示第i列,此时使用原列名)。

参数:

A

序表/排列

X

排列或者整数;如果X为整数,则与to(X)相等,表示对A中每条记录的插入次数

xi

表达式,结果为字段值,xi中的~针对排列X而非A。用#时表示用序号定位。

Fi

新序表/排列的字段名,省略则自动识别

选项:

@1

左连接,当排列X为空时,则创建一条空记录

返回值:

新序表/排列

示例:

 

A

 

1

=demo.query("select * from EMPLOYEE")

 

2

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

针对GENDER做分组

3

=A2.news(group;EID,NAME,GENDER,#3:surname, age(~.BIRTHDAY):age,SALARY+50:salary,A2.avg:AvgSalary)

A2是一个分组,针对每组计算字段值生成序表然后合并成一个新序表

4

=A1.news(2;EID,NAME,GENDER,STATE,age(A1.BIRTHDAY):AGE)

生成一个新的序表,其中每条记录重复2

5

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

 

针对DEPT分组,分组后继续根据GENDER分组

6

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

1559034619(1)

A5分组中的DEPTGENDER,展示各DEPT下不同GENDER的平均工资

7

=MySQL1.query("select * from EMPLOYEE")

 

8

=A7.group(GENDER;~:group)

针对MySQL1数据库EMPLOYEE表中的GENDER做分组

9

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

针对demo数据库EMPLOYEE表中的GENDER做分组

10

=A9.join(GENDER,A8:GENDER,group)

11

=A10.news@1(group;EID,NAME,GENDER,age(~.BIRTHDAY):age,salary,avg:AvgSalary)

针对每组计算字段值生成序表,GENDERMgroup排列为空,则生成一条空记录,然后合并成一个新序表

相关概念:

cs.news()

ch.news()

描述:

计算管道内记录的字段值合并到原管道

语法:

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

备注:

根据管道ch,计算排列X后把计算后的字段合并到原管道,Fi为新字段名,xi为计算结果Fi省略自动识别。

该函数属于附加计算动作

参数:

ch

管道

X

排列

xi

表达式,结果为字段值,xi中的~针对X而非A。用#时表示用序号定位。

Fi

cs的字段名,省略则自动识别

返回值:

管道ch

示例:

 

A

 

1

=demo.cursor("select * from EMPLOYEE")

 

2

=demo.query("select * from EMPLOYEE")

 

3

=channel()

创建管道

4

=A2.group(GENDER;~:group)

针对GENDER做分组

5

=A1.groupx(GENDER;avg(SALARY):avg)

针对GENDER做分组

6

=A5.join(GENDER,A4:GENDER,group)

 

7

=A3.news(group;EID,NAME,GENDER,#3:surname,age(~.BIRTHDAY):age,SALARY+50: salary,avg:AvgSalary)

A6是一个分组,针对每组计算字段值,最后合并到管道A3

8

=A3.fetch()

保留管道当前数据

9

=A6.push(A3)

将游标A6中的数据推送到管道A3,此时数据不会立即被推送到管道。

10

=A6.fetch()

A6执行fetch()时程序才会执行管道中的计算,游标中的数据才真正被推送到管道。

11

=A3.result()

cs.news()

描述:

计算游标字段值合并到原游标

语法:

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

备注:

根据游标cs,把排列X计算后的字段合并到原游标,Fi为新字段名,xi为计算结果Fi省略自动识别。

参数:

cs

游标

X

排列

xi

表达式,结果为字段值,xi中的~针对X而非A。用#时表示用序号定位。

Fi

cs的字段名,省略则自动识别

选项:

@1

左连接,当排列X为空时,则创建一条空记录

返回值:

原游标cs

示例:

 

A

 

1

=demo.cursor("select * from EMPLOYEE")

 

2

=demo.query("select * from EMPLOYEE")

 

3

=A2.group(GENDER;~:group)

针对GENDER做分组

4

=A1.groupx(GENDER;avg(SALARY):avg)

针对GENDER做分组

5

=A4.join(GENDER,A3:GENDER,group)

 

6

=A5.news(group;EID,NAME,GENDER,#3:surname,age(~.BIRTHDAY):age,SALARY+50: salary,avg:AvgSalary)

A4是一个分组,针对每组计算字段值生成游标然后合并成一个新游标

7

=A6.fetch()

8

=MySQL1.query("select * from EMPLOYEE")

 

9

=A8.group(GENDER;~:group)

针对GENDER做分组

10

=A4.join(GENDER,A9:GENDER,group)

11

=A10.news@1(group;EID,NAME,GENDER,age(~.BIRTHDAY):age,salary,avg:AvgSalary)

针对每组计算字段值生成序表,GENDERMgroup排列为空,则生成一条空记录,然后合并成一个新序表

12

=A11.fetch()

相关概念:

A.news(X;xi:Fi,)

 

T.news(A/cs:K,x:C,...;wi,...)

描述:

根据序表/游标键值取出组表中的指定字段值合并生成新的序表/游标。

语法:

T.news(A/cs:K,x:C,…;wi,...)

备注:

组表T和序表A/游标cs是多对一关系,按序表A/游标cs的键/维值与T(从头开始)的字段对应,取出组表T中的指定字段值x,...,合并生成新的序表,要求A/cs对键有序,且A/cs的键对T前面字段键同序。

对比函数T.new(),该函数可将A/cs与组表T做一对多关联,结果返回与A/cs主键对应的组表T中的记录组成的结果集;而T.new()函数,相当于只能将A/cs与组表做一对一或多对一的关联。

参数:

T

组表

A/cs

序表/游标/组表游标

K

字段名,A/cs后有K…参数时,则用这些字段来对应

x

字段值

C

列别名

wi

过滤条件,多个过滤条件间用逗号间隔,且条件间为AND关系

选项:

@r

复制主表记录,返回结果集按A/cs对齐,此时可聚合

返回值:

序表/游标

示例:

 

A

 

1

=file("score.ctx").open ()

打开组表文件

 

2

=demo.query("select * from students").keys(ID)

返回以ID为键的序表

3

=A1.news(A2:ID,STUDENTID,SUBJECT,SCORE;SUBJECT=="Math",SCORE>70)

将组表A1与序表A2做关联计算,过滤条件为SUBJECT

MathSCORE大于70,结果返回对应的组表中的记录

4

=A1.news@r(A2:ID,NAME,sum(SCORE):TotalScore)

对学生的分数做聚合,结果如下:

T.news(A/cs,x:C,...;wi,...)

描述:

根据集群内表/集群游标键值取出集群表中的指定字段值合并生成新的序表/集群多路游标

语法:

T.news(A/cs,x:C,…;wi,...)

备注:

根据集群内表A/集群游标cs键值取出集群表T中的指定字段值x,...,合并生成新的序表/集多路游标,要求A/cs对键有序,且A/cs的键对T前面字段键同序。

参数:

T

集群表

A/cs

集群内表/集群游标

x

字段值

C

列别名

wi

过滤条件,多个过滤条件间用逗号间隔,且条件间为AND关系

选项:

@z

A/cs前面字段和T的键/维对应

返回值:

序表/集群多路游标

示例:

 

A

 

1

=file("scores.ctx",["192.168.31.165:8281"]).open()

返回集群表

2

=file("student.ctx",["192.168.31.165:8281"]).open().memory()

返回集群内表

3

=A1.news(A2,STUDENTID,SUBJECT,SCORE;SUBJECT=="Math",SCORE>70)

返回序表