描述:
游标中附加相邻值分组聚合动作后返回原游标。
语法:
备注:
游标cs附加计算,cs根据x分组后计算聚合表达式y,x为字段F的值,y为字段G的值, 形成以F,... G,…为字段的序表返回到原游标cs。支持多路游标。
cs对x有序,x只和相邻的记录对比,结果集不再排序。
该函数属于延迟计算函数。
参数:
cs |
游标。 |
x |
分组表达式。 |
F |
字段名。 |
G |
汇总字段名。 |
y |
聚合表达式。 |
选项:
@s |
用累积方式聚合。 |
@q(x:F,…;x’:F’,…; y:G,…) |
cs已对x,…有序,仅后面的字段需要排序时可用该选项,可以内存排序。 |
@sq(x:F,…;x’:F’,…; y:G,…) |
没有y:G参数时仅排序,不分组;有y:G参数时按累计方式聚合。该用法中@s必须与@q配合使用。 |
@e |
将y的结果组成的序表返回到原游标。其中x为cs的字段名,y是cs的函数,y的计算结果要求是cs的一条记录,当y是聚合函数时仅支持maxp/minp/top@1。 组合使用@sev选项时,返回结果为纯序表。 |
返回值:
游标
|
A |
|
1 |
=demo.cursor("select * from SCORES").sortx(CLASS,STUDENTID) |
返回游标,游标内容对CLASS,STUDENTID有序,数据内容如下: |
2 |
=A1.group(CLASS:Class,STUDENTID:StudentID;~.sum(SCORE):TotalScore) |
游标A1附加计算,根据CLASS,STUDENTID相邻值分组,汇总每组的SCORE值,汇总结果作为TotalScore字段值,返回原游标cs。 |
3 |
=A1.fetch() |
读取游标A1执行A2计算后的数据: |
使用@q选项:
|
A |
|
1 |
=demo.cursor("select EID,NAME,DEPT,GENDER,SALARY from EMPLOYEE ").sortx(DEPT) |
返回游标,游标内容对DEPT有序,数据内容如下: |
2 |
=A1.group@q(DEPT;GENDER;~.avg(SALARY):Avg_Salary) |
游标A1附加计算,游标对DEPT有序,仅GENDER字段需要排序,使用@q选项进行内存排序,返回原游标cs。 |
3 |
=A1.fetch() |
读取游标A1执行A2计算后的数据: |
使用@sq选项,无需汇总仅排序时:
|
A |
|
1 |
=demo.cursor("select EID,NAME,DEPT,GENDER,SALARY from EMPLOYEE ").sortx(DEPT) |
返回游标,游标内容对DEPT有序,数据内容如下: |
2 |
=A1.group@sq(DEPT;GENDER) |
游标A1附加计算,游标仅对DEPT有序,且省略汇总聚合参数,使用@sq选项仅排序不分组,返回原游标cs。 |
3 |
=A1.fetch() |
读取游标A1执行A2计算后的数据: |
使用@e选项,将y的结果组成的序表返回到原游标:
|
A |
|
1 |
=demo.cursor("select EID,NAME,DEPT,SALARY from EMPLOYEE ").sortx(DEPT) |
返回游标,游标内容对DEPT有序。 |
2 |
=A1.group@e(DEPT;~.maxp(SALARY)) |
游标A1附加计算,使用@e选项,将maxp(SALARY)结果记录返回到原游标。 |
3 |
=A1.fetch() |
读取游标A1执行A2计算后的数据: |