描述:
针对游标中的记录分组并返回游标。
语法:
cs.groupx(x:F,…;y:G…;n)
备注:
按照x分组后,形成以F,...G,…为字段的新游标;新游标按分组表达式x排序,G字段值为对每一组执行聚合函数y后的结果。
该函数返回的游标不可回转。
选项:
@n |
x取值为分组序号,可直接定位。 |
@u |
结果集不再按x排序;与@n互斥。 |
@g |
参数n解释为分段表达式,先根据表达式n分段,分段后再分组排序。 |
参数:
cs |
游标。cs为多路游标时并行取数计算,返回结果为单路游标。 |
x |
分组表达式。 |
F |
结果字段名。 |
y |
cs的聚合函数,仅支持sum/count/max/min/top/iterate,使用iterate(x,a;Gi,…)时不能有参数Gi。 |
G |
汇总字段名。 |
n |
缓冲区行数,运算过程中如果分组数达到n,则把分组结果写入临时文件中;n<1时缓冲区用缺省值的n倍;缺省值由集算器自动计算。 |
返回值:
游标
示例:
|
A |
|
1 |
=demo.cursor("select * from SCORES where CLASS='Class one'") |
|
2 |
=A1.groupx(STUDENTID:ID;sum(SCORE):Scores).fetch() |
|
3 |
=demo.cursor("select * from FAMILY") |
|
4 |
=A3.groupx@n(if(GENDER=="Male",1,2):ID;sum(AGE):TotalAge).fetch() |
x取值为分组序号,GENDER等于“Male”的分到第一组,否则分到第二组,并且每个组聚合。 |
5 |
=demo.cursor("select * from EMPLOYEE") |
|
6 |
=A5.groupx@u(STATE:State;count(STATE):TotalScore).fetch() |
结果集无序。 |
7 |
=demo.cursor("select * from EMPLOYEE where EID <=20") |
|
8 |
=A7.groupx@g(GENDER;min(SALARY);EID>=10).fetch() |
以EID>=10为分段条件,分段后计算min(SALARY),后两行为EID>=10的分组结果。 |
9 |
=demo.cursor("select * from SCORES").groupx(STUDENTID:ID;sum(SCORE):Scores;3) |