本章介绍news()函数的多种用法。
描述:
计算序表/排列的字段值合并生成新序表/排列。
语法:
A.news(X;xi:Fi,…)
备注:
根据序表/排列A,计算排列X后把计算后的字段合并到一个新的序表/排列,Fi为新字段名,xi为计算结果,Fi省略自动识别。当参数xi使用#i时,表示第i列,此时使用原列名。
参数:
A |
序表/排列 |
X |
排列 |
xi |
表达式,结果为字段值,xi中的~针对X而非A。用#时表示用序号定位。 |
Fi |
新序表/排列的字段名,省略则自动识别 |
返回值:
新序表/排列
示例:
|
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是一个分组,针对每组计算字段值生成序表然后合并成一个新序表 |
相关概念:
描述:
计算管道内记录的字段值合并到原管道
语法:
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(X;xi:Fi,…)
备注:
根据游标cs,把排列X计算后的字段合并到原游标,Fi为新字段名,xi为计算结果,Fi省略自动识别。
参数:
cs |
游标 |
X |
排列 |
xi |
表达式,结果为字段值,xi中的~针对X而非A。用#时表示用序号定位。 |
Fi |
cs的字段名,省略则自动识别 |
返回值:
原游标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() |
|
相关概念: