汇总

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

模式判定(最高优先级,必须先执行)

汇总有两种互斥的聚合模式:1.一次聚合 2. 两次聚合

一次聚合是指:某个汇总列(一组汇总参数)只执行一次求值聚合算法,即将多条记录变单值的聚合算法,

具体有:首位、末尾、合计、平均、计数、唯一计数、方差、标准差、最大、最小。

语法是:[汇总 {[条件 <过滤条件>] [<被聚合的计算式>] [求值聚合算法] [分隔符 <符号>] [命名 <新列名>]}] [分组 {[<分组计算式>] [命名 <新列名>]}]

 

两次聚合是指:某个汇总列(一组汇总参数)需要进行两次聚合,第一次是求记录聚合算法,即将多条记录变一条或同值的多条记录,

具体有:最大者、最小者。比如订单金额最大的记录,当最大值不重复时结果是一条记录,当最大值重复时结果是多条。第一次聚合算法之后,需要立刻执行第二次的求值聚合算法(将多条记录变单值的聚合算法),才能算出最终结果。比如第一次聚合求出多条订单金额最大的记录,第二次聚合根据这些记录求金额的合计,完整算法是求订单金额最大的记录的金额合计。NLC的两次聚合类似SQLkeep函数。

语法是:[汇总 {[条件 <过滤条件>] [<被聚合的计算式>] [求记录聚合算法] [<被聚合的计算式>] [求值聚合算法] [分隔符 <符号>] [命名 <新列名>]}] [分组 {[<分组计算式>] [命名 <新列名>]}]

 

判定规则(必须严格执行)

如果自然语言所表达出的聚合计算包括:最大者、最小者

必须使用两次聚合。

相反,如果自然语言表达出的聚合计算没有:最大者、最小者,而是只有:首位、末尾、合计、平均、计数、唯一计数、方差、标准差、最大、最小。

必须使用一次聚合

如果同时出现或语义冲突:

输出错误,不允许猜测

如果未明确表达最大者、最小者:

默认使用一次聚合。

参数结构说明

本功能的参数由汇总、分组这两部分组成:

汇总部分的参数名是"汇总",必须省略,是一组或多组同样结构的参数,每组参数表示一个汇总列,由5(一次聚合)7个参数(两次聚合)组成,其中,一次聚合的一组参数是:[条件 <过滤条件>] [<被聚合的计算式>] [求值聚合算法] [分隔符 <符号>] [命名 <新列名>];两次聚合的一组参数是:[条件 <过滤条件>] [<被聚合的计算式>] [求记录聚合算法] [<被聚合的计算式>] [求值聚合算法] [分隔符 <符号>] [命名 <新列名>]

分组部分的参数名是"分组",不能省略,也是一组或多组同样结构的参数,每组参数表示一个分组列,由2个参数组成,分别是:[<分组计算式>] [命名 <新列名>]。先说明汇总部分的参数。

 

参数说明

 

参数:被聚合的计算式

对组内数据进行聚合计算时,所针对的表达式,通常是与原列有关的表达式,含单列(属于计算式的一种)。比如:单价*数量,这是含有多个列的表达式;金额,这是单列。必要字段;类型是表达式;参数名必须省略,参数值不能省略。注意,本参数必须与参数求值聚合算法求记录聚合算法同时用。某个汇总列如果进行一次聚合,则只有一个被聚合的计算式参数,如果进行两次聚合,则一定有两个被聚合的计算式参数。注意,本参数不支持跨行计算和聚合计算,即计算式里不能含有F[i]F[a:b]形式的相对位置计算,也不能有集合的求和、平均等聚合计算。

 

参数:求值聚合算法

对组内数据进行聚合,求出单个数值的固定算法。必要参数;枚举类型;参数名必须省略,参数值不能省略。本参数必须和参数被聚合的计算式一起用。

各枚举值如下:

首位、末尾:即第1项、最后1项,通常要事先排序才有意义。

合计、平均、计数、唯一计数、方差、标准差、最大、最小:按常识理解。

查重:计算是否重复,即"计数 减 唯一计数",等于0时表示无重复、大于0时表示有重复。

连结:用分隔符连结成员,分隔符用参数[分隔符<符号>]指定。注意,其他聚合算法不需要分隔符。

例子:

求订单例子表的最大金额、最小金额。

NLC:汇总 Amount量 最大, Amount量 最小

结果:

最大Amount 最小Amount

20000 231

解释:最大Amount量和Amount量 最小是汇总结果的列名,由系统自动生成,如果想指定列名,应该用参数命名 <新列名>

 

参数: 求记录聚合算法

对组内数据进行聚合,求出单条记录或同值的多条记录的固定算法。必要参数;枚举类型;参数名必须省略,参数值不能省略。本参数一定是为了进行两次聚合,必须和参数被聚合的计算式一起用,必须和求值聚合算法一起用。

各枚举值如下:

最大者、最小者:参数被聚合的表达式最大或最小时所对应的记录,有多个最大值时返回多条记录。

例子:

根据订单例子表求订单日期最近的记录的最大的金额、金额合计。

NLC:汇总 OrderDate 最大 Amount量 最大, Amount量 合计

结果:

最大OrderDate最大Amount  合计Amount

20000 4500000

解释:"最大OrderDate最大Amount""合计Amount"是汇总结果的列名,由系统自动生成,如果想指定列名,应该用参数命名 <新列名>

 

参数:分隔符 <符号>

当聚合算法是连结时,使用本参数将组内成员(由参数被聚合的表达式指定)合并起来。非必要参数,缺省参数值是空(null);类型是字串;参数名不能省略。

例子:

将订单例子表的ClientID字段用逗号合并起来

NLC:汇总 ClientID 连结 分隔符 逗号

结果:

连结ClientID

WVF,UFS,JFS,DSG,JFE,OLF,PAER,DY,JDR,WBG,GCD,WVF,UFS

 

参数:条件 <过滤条件>

在聚合之前,可以先对分组后的记录进行过滤。非必要参数;类型是条件式;参数名不能省略。

例子:

过滤出符合条件式" OrderDate==2019 OrderDate==2020"的记录,再求最大的金额对应的记录

NLC: 汇总 Amount量 最大者

结果:

OrderID  ClientID  SellerId  Amount  OrderDate

87  WF  15  19000  2019-03-04

42  VET 12  19000  2020-04-08

 

参数:分组计算式

用于分组的表达式,可以是单字段(属于表达式的一种)。比如,计算出身份证字段的前6位,作为分组字段"区域"。对多个列分组时需要用多组参数,每组有一个分组列参数。必要参数(当有分组部分的参数时);类型为计算式;参数名必须省略。注意,本参数不支持跨行计算和聚合计算,即计算式里不能含有F[i]F[a:b]形式的相对位置计算,也不能有集合的求和、平均等聚合计算。

例子:

将订单分析表按年份、ClientID分组,求各组最大的金额、最小的金额。

NLC:汇总 Amount量 最大, Amount量 最小; 分组 年份, ClientID

结果:

年份  ClientID  最大Amount  最小Amount

2019  WF  19000  2100

2020  WF  12800  2200

2021  WF  14100  1300

2019  TEF  13000  2200

2020  ETF  23000  3100

 

参数:命名 <新列名>

汇总结果和分组列可以由系统自动命名新列名,也可用本参数指定。非必要参数;类型是()标识;参数名不能省略。注意,分组部分也有同名参数,意义和用法类似。

例子:

求订单例子表的最大的金额、最小的金额,分别命名为大订单金额、小订单金额。

NLC:汇总 Amount量 最大, Amount量 最小

结果:

大订单金额  小订单金额

20000 231

注意:如果省略参数命名 <新列名>,则表示自动命名。