ch.groups()

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

描述:

针对管道中的记录分组。

语法:

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

备注:

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

新管道按分组表达式x排序,G字段值为对每一组执行聚合函数y后的结果。该函数为结果集函数。

选项:

@n

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

@u

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

参数:

ch

管道。

x

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

F

结果序表的字段名。

y

ch的聚合函数,仅支持sum/count/max/min/top /avg/iterate/concat/var,使用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()