ch.groups()

阅读(369) 标签: 管道, 记录分组, 结果集聚合,

描述:

针对管道中的记录分组。

语法:

ch.groups(x:F,…;y:G…;n)

备注:

针对管道ch中的记录按照x分组并排序,形成以F,...G,…为字段的管道。

新管道中按分组字段x排序,F字段值为每一组第一条记录的x字段值,G字段值为对每一组进行y操作后的结果。ych的聚合函数。该函数为结果集函数。

选项:

@n

x取值为分组序号,可直接定位

@u

结果集不再按x排序;与@n互斥

参数:

ch

管道

x

分组表达式,x:F省略表示针对全集聚合,此时不可省略。

F

结果序表的字段名

y

聚合函数,仅支持sum/count/max/min/top /avg/iterate,使用iterate(x,a;Gi,…)时不能有参数Gi

G

结果序表中的汇总字段名

返回值:

管道

示例:

 

A

 

1

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

 

2

=channel()

创建管道

3

=channel()

创建管道

4

=channel()

创建管道

5

=channel()

创建管道

6

=A1.push(A2,A3,A4,A5)

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

7

=A2.groups(;sum(SALARY):TotalSalary)

省略x:F求所有员工的总工资

8

=A3.groups(DEPT:dept;sum(SALARY):TotalSalary)

指定字段DEPT分组,并按照指定字段排序

9

=A4.groups@n(if(GENDER=="F",1,2):SubGroups;sum(SALARY):TotalSalary)

x取值为分组序号,GENDER等于“F”的分到第一组,否则分到第二组,并且每个组聚合

10

=A5.groups@u(STATE:State;count(STATE):count)

结果集不按分组字段排序

11

= A1.select(month(BIRTHDAY)==2)

 

12

=A11.fetch()

游标A11添加了计算。

13

=A2.result()

14

=A3.result()

15

=A4.result()

16

=A5.result()