汇总

阅读(261) 标签: 汇总, 聚合,

功能:

分组聚合,相当于SQL的GROUP BY +聚合函数。

语法:

[汇总 {[求值聚合算法] [<被聚合的计算式>] [用] [条件 <过滤条件>] [命名 <新列名>]}] [分组 {[<分组计算式>] [命名 <新列名>]}]  //一次聚合

[汇总 {[求记录聚合算法] [<被聚合的计算式>] [求值聚合算法] [<被聚合的计算式>] [用] [条件 <过滤条件>] [命名 <新列名>]}] [分组 {[<分组计算式>] [命名 <新列名>]}]  //两次聚合

一次聚合:对一组汇总参数执行一次求值聚合,将多条记录变为单值。支持的聚合算法:首位、末位、合计、最大、最小、计数、唯一计数、平均、连结。

两次聚合:对一组汇总参数执行两次聚合,类似 SQL 的 KEEP 函数。

第一次是记录聚合,将多条记录变为一条或多条同值记录,支持的聚合算法:最大者、最小者;

第二次是求值聚合,对第一次的结果执行求值聚合(合计、平均等),得到最终单值;

例如【订单金额最大的记录的金额合计】,第一次找出金额最大的记录,可能是多条,第二次对这些记录求金额合计。

汇总功能的参数由汇总和分组这两部分组成,聚合参数在分组参数之前。

Ø  一次聚合参数介绍

每组5个参数。

参数:求值聚合算法

对组内数据进行聚合,求出单个数值的固定算法。

必填,省略参数名。枚举类型,枚举值:首位、末位、合计、最大、最小、计数、唯一计数、平均、连结。

参数:被聚合的计算式

聚合针对的字段或表达式。

必填,省略参数名。

示例:

汇总 最大 SALARY  最小 SALARY  // 计算EMPLOYEE表SALARY字段的最大值和最小值,结果列由系统自动命名,结果如下:

col_1

col_2

16000

3000

参数: [用]

仅当聚合算法为"连结"时,指定分隔符。

可选,不可参数名,缺省值是空串""。

示例:

  汇总 连结 NAME; 用 ","; 命名 员工列表; 分组 DEPT  //按部门分组,将同一部门的员工姓名用逗号连结成一个字符串,写入新列【员工列表】,结果如下:

参数:条件 <过滤条件>

聚合之前可先过滤组内记录。

可选,不可省略参数名。

示例:

汇总 最大 SALARY; 条件  (DEPT="HR")  //过滤出符合条件式DEPT="HR"的记录,再计算SALARY的最大值。

参数:命名 <新列名>

给汇总结果列命名,缺省由系统自动命名。

可选,不可省略参数名。

示例:

汇总 最大 SALARY  命名 工资最高  最小 SALARY 命名 工资最低  // 计算EMPLOYEE表SALARY字段的最大值和最小值,结果如下:

工资最高

工资最低

16000

3000

Ø  两次聚合参数介绍

每组7个参数。

参数:求记录聚合算法

对组内数据进行聚合,求出单条记录或同值的多条记录的固定算法。

必填,省略参数名,枚举类型,枚举值:最大者、最小者。本参数必须和参数被聚合的计算式、求值聚合算法一起用。

参数:被聚合的计算式

第一次聚合针对的字段或表达式。

必填,省略参数名。

参数:求值聚合算法

必填,省略参数名。枚举类型,枚举值:首位、末位、合计、最大、最小、计数、唯一计数、平均、连结。

参数:被聚合的计算式

第二次聚合针对的字段或表达式。

必填,省略参数名。

示例:

汇总 最大 HIREDATE 命名 最早入职日期  最大 SALARY 命名 最高公资, 平均 SALARY 命名 工资平均值  //第一次聚合找出 HIREDATE 最大的记录(可能多条),第二次对这些记录求 SALARY 的最大值;同时计算全表的SALARY平均值,返回结果如下:

最早入职日期

最高公资

工资平均值

2011-03-01

16000

3697500

参数:[用] [条件 <过滤条件>] [命名 <新列名>]

这三个参数与上面一次聚合中的用法相同。

Ø  分组部分参数介绍

参数:分组计算式

分组依据的字段或表达式。

必填,省略参数名。

示例:

汇总 最大 SALARY, 最小 SALARY; 分组  DEPT,GENDER  //将EMPLOYEE表按部门、性别分组,求各组SALARY字段的最大值和最小值,结果如下:

DEPT

GENDER

col_1

col_2

Administration

F

16000

16000

Administration

M

12000

5000

Finance

F

11000

5000

Finance

M

11000

5000

HR

F

10000

3000

HR

M

12000

5000

Marketing

F

16000

4000

Marketing

M

12000

5000

Production

F

12000

3000

Production

M

13000

5000

R&D

F

16000

5000

R&D

M

16000

5000

Sales

F

15000

4000

Sales

M

12000

3000

Technology

F

13000

5000

Technology

M

10000

5000

参数:命名 <新列名>

给分组列命名。

可选,不可省略参数名。

示例:

汇总 连结 NAME; 用 ","; 命名 员工列表; 分组 DEPT 命名 部门名称  //按部门分组,将同一部门的员工姓名用逗号连结成一个字符串,写入新列【员工列表】,并将分组列DEPT命名为【部门名称】,结果如下: