行分组

1 分组前后

  1. 在分组之前,可以先过滤数据行。即分组的对象是过滤后的数据行。

  2. 为了利用数据库系统实现排序和统计,数据在分组前都被自动转换为临时数据库表。

  3. 对于分组后的数据,可以设置排序条件和每组最多取值个数。

2 分组的作用

把数据行分组以后,可以:

  1. 对源数据添加分组信息,即新增两列:组编号、组参数。

  2. 按组将数据分割为多个文件。

  3. 按组进行描述性统计。

  4. 按组依序显示为动态的XY图/饼图/相比较图/自比较图/箱线图。

3 分组的方式

MyBox支持六种数据分组方式:

方式 参数 完全 不相交
等值分组 若干列名
值范围分组 一个列名 + 分割尺寸
一个列名 + 分割个数
一个列名 + "开始值-结束值"列表 可能 可能
时间分组 一个时间类型的列名 + 时间单位
表达式分组 一个行表达式
条件分组 若干行过滤表达式 可能 可能
行范围分组 分割尺寸
分割个数
"开始行号-结束行号"列表 可能 可能

以下分别介绍它们。

4 等值分组

4.1 分组方式

选择若干列,把这些列的值都相同的数据行分为同一组。

4.2 实现原理

  1. 把数据转换为临时数据库表

  2. 读取每行数据,按列值分组。其效果类似于SQL语句"group by"。

4.3 分组的结果

5 值范围分组

5.1 分组方式

选择一列,按照它的值范围分割数据行。

分割条件有三种选择:

5.2 对于时间/纪元进行分割

当被分割的列为时间/纪元类型:

  1. 列值被转换为毫秒数。

  2. 可设置时间单位。

  3. 设置"开始-结束"项时,应输入合法的时间格式。

5.3 编辑起止列表

  1. 在表格中增删改起止项。

  2. 对起止项可设置是否包含"开始"值或"结束"值。

5.4 实现原理

  1. 把数据转换为临时数据库表。

  2. 忽略所选列的类型,将它的数据解析为双精度数值。

  3. 计算该列的最大值和最小值。

  4. 计算各组的区间

  5. 构造各组的查询语句,条件类似于"列 >= 区间开始值 AND 列 < 区间结束值"。

5.5 分组的结果

6 时间分组

6.1 分组方式

只有当数据包含时间类型的列时,才能采用这种分组方式:

  1. 选择一个时间类型的列

  2. 选择时间单位:世纪/年/月/日/时/分/秒。

例如:

6.2 实现原理

  1. 把数据转换为临时数据库表

  2. 对所选时间单位,同值则同组。

6.3 分组的结果

7 表达式分组

7.1 分组方式

定义行表达式,其值相同则同组。

例如:

7.2 实现原理

  1. 把数据转换为临时数据库表

  2. 对每行数据计算表达式的值,同值则同组。

7.3 分组的结果

8 条件分组

8.1 分组方式

定义若干行过滤器,按照这些行过滤器将数据行分割成组。

8.2 实现原理

  1. 把数据转换为临时数据库表。

  2. 对于每个行过滤器,遍历数据行以挑出满足条件的组成员。

8.3 分组结果

9 行号分组

9.1 分组方式

按照数据行号分割数据行。有三种选择:

9.2 实现原理

  1. 把数据转换为临时数据库表。

  2. 计算各组的行号区间

  3. 遍历数据行,按行号指定组。

9.3 分组的结果