按指定基准对齐的分组运算

【摘要】
    在分组时经常会要求结果集必须按基准集合的次序出现,这种对齐分组在日常统计中是很常见的。我们还能把对齐分组推广成更一般的枚举分组。如何简便快捷的处理对齐分组,这里为你全程解析,并提供 esProc 示例代码。按指定基准对齐的分组运算

对照一个基准集合,将待分组集合成员的某个字段或表达式与基准集合成员比较,相同者则分到同一个组中,最后拆分出来的组数和基准集合成员数是相同的。这种分组我们称为对齐分组。对齐分组可能会有空组,也可能有成员未分配到任何一个组中。

1. 普通对齐分组


1.1 每组保留最多一个匹配成员

按某字段的指定顺序,将表中所有记录分组并汇总求和。

【例 1】 根据相互关联的课程表和选课表,按课程表顺序查询有哪些课程无人选择:

按指定基准对齐的分组运算_第1张图片

【SPL 脚本】

按指定基准对齐的分组运算_第2张图片

A5的执行结果如下:

按指定基准对齐的分组运算_第3张图片

1.2 每组保留所有匹配成员

按某字段的指定顺序,将表中所有记录分组并汇总求和。

【例 2】 根据相互关联的员工表和部门表,按部门表中的部门顺序统计各部门人数:

按指定基准对齐的分组运算_第4张图片

【SPL 脚本】

按指定基准对齐的分组运算_第5张图片

A5的执行结果如下:

按指定基准对齐的分组运算_第6张图片

1.3 不匹配记录放到新组

按某字段的指定顺序,将表中所有记录分组,不匹配记录放到新组。

【例 3】 根据员工薪资表,统计 [California, Texas, New York, Florida] 的平均工资,未指定的州作为“Other”统计。员工薪资表部分数据如下:

按指定基准对齐的分组运算_第7张图片

【SPL 脚本】

按指定基准对齐的分组运算_第8张图片

A5的执行结果如下:

按指定基准对齐的分组运算_第9张图片

2. 序号对齐分组


序号对齐分组,是指按照指定的序号进行分组,序号相同的成员分到同一组。

2.1 每组保留最多一个匹配成员

在相互关联的两个表中,查找未被引用的记录。

【例 4】 根据相互关联的销售表和客户表,顺序列出 2014 年没有销售记录的客户:

按指定基准对齐的分组运算_第10张图片

【SPL 脚本】

按指定基准对齐的分组运算_第11张图片

A6的执行结果如下:

按指定基准对齐的分组运算_第12张图片

2.2 每组保留所有匹配成员

按序号将表中所有记录分组并汇总求和。

【例 5】 根据订单表,顺序列出 2013 年每月的订单总数。订单表部分数据如下:

按指定基准对齐的分组运算_第13张图片

【SPL 脚本】

按指定基准对齐的分组运算_第14张图片

A4的执行结果如下:

按指定基准对齐的分组运算_第15张图片

2.3 按序号重复性分组

按计算出的序号数列重复性分组并计算。

【例 6】 根据发帖记录表,按标签将帖子分组,并统计各个标签出现频数。发帖记录表部分数据如下:

按指定基准对齐的分组运算_第16张图片

【SPL 脚本】

按指定基准对齐的分组运算_第17张图片

A5的执行结果如下:

按指定基准对齐的分组运算_第18张图片

2.4 分段分组

根据指定字段的值,分段分组并汇总计数。

【例 7】 根据员工薪资表,按工资 8000 以下、8000~12000 和 12000 以上分组,并统计各组的人数。员工薪资表部分数据如下:

按指定基准对齐的分组运算_第19张图片

【SPL 脚本】

按指定基准对齐的分组运算_第20张图片

A5的执行结果如下:

按指定基准对齐的分组运算_第21张图片

根据表达式的计算结果,将记录分段分组并汇总计算平均值。

【例 8】根据员工表,按入职时间 10 年以下,10~20 年和 20 年以上分组,并统计每组的平均工资。员工表部分数据如下:

按指定基准对齐的分组运算_第22张图片

【SPL 脚本】

按指定基准对齐的分组运算_第23张图片

A6的执行结果如下:

按指定基准对齐的分组运算_第24张图片

3. 枚举分组


枚举分组是指,事先指定一组枚举条件,将待分组集合的成员作为参数计算这批条件,条件成立者都被划分到与该条件对应的一个子集中,结果集的子集和事先指定的条件一一对应。

3.1 每个成员只存放到第一个匹配组

根据枚举条件表达式,将记录分组,分组时记录只置于第一个匹配组。

【例 9】 根据中国主要城市人口表,按人口将城市分类。中国主要城市人口表部分数据如下:

按指定基准对齐的分组运算_第25张图片

【SPL 脚本】

按指定基准对齐的分组运算_第26张图片

A4的执行结果如下:

按指定基准对齐的分组运算_第27张图片

3.2 不匹配成员存放到新组

根据枚举条件表达式,将记录分组,不匹配记录放到新组。

【例 10】 根据员工薪资表,按年龄条件 [小于 35 岁, 小于 45 岁] 将员工分组,统计平均工资,不满足条件的分到新组。员工薪资表部分数据如下:

按指定基准对齐的分组运算_第28张图片

【SPL 脚本】

按指定基准对齐的分组运算_第29张图片

A5的执行结果如下:

按指定基准对齐的分组运算_第30张图片

3.3 按照枚举条件可重复分组

根据不同的指定序列,将记录分组并计算,分组时记录可重复。

【例 11】 根据城市 GDP 表,分别统计直辖市、一线城市、二线城市的人均 GDP,分组时可能重复。城市 GDP 表部分数据如下:

按指定基准对齐的分组运算_第31张图片

【SPL 脚本】

按指定基准对齐的分组运算_第32张图片

A5的执行结果如下:

按指定基准对齐的分组运算_第33张图片

SPL CookBook》中还有更多相关计算示例。

你可能感兴趣的:(分组)