SQL查询分组统计示例

SuperMap 中的 SQL 查询功能可以根据指定的某个(或多个)字段将查询结果进行分组,使指定字段上有相同值的记录分在一组。

指定单个字段分组

下面将以示范数据PopulationAndEconomy数据源中的Province_R数据为例,分组统计我国东部、西部、中部、东北部地区的省份数量。

  1. 将示范数据中的PopulationAndEconomy数据源打开到工作空间管理器中。
  2. 空间分析选项卡->查询组中选择SQL查询
  3. 在SQL查询对话框中,数据源选择PopulationAndEconomy,数据集选择Province_R。
  4. 勾选SQL编辑复选框,并清空SQL语句输入框中的内容。
  5. 在高级节点下中将分组字段设置为:Class
  6. 结果保留字段中输入:Class, Count(SmID) as ProvinceClassCount。

    表示在结果数据中保留Class字段。按照分组字段Class计算每个分组中的省份个数,并将结果保存在ProvinceClassCount字段中。

  7. 在结果显示中勾选浏览属性表。
  8. 勾选保存查询结果,设置查询结果所在的数据源和数据集名称。
  9. 单击查询,即可弹出结果属性表窗口,窗口中显示的内容如下图:

指定多个字段分组

您只需要在分组字段下拉复选框中勾选或直接输入多个字段信息,程序将首先按照输入的第一个字段对属性表进行分组,再根据第二个字段分组,依此类推。

下面仍以示范数据PopulationAndEconomy数据源中的Province_R数据为例,基于各地区省份数量再按照地图的颜色进行分组统计。

  1. 将示范数据中的PopulationAndEconomy数据源打开到工作空间管理器中。
  2. 空间分析选项卡->查询组中选择SQL查询
  3. 在SQL查询对话框中,数据源选择PopulationAndEconomy,数据集选择Province_R。
  4. 勾选SQL编辑复选框,并清空SQL语句输入框中的内容。
  5. 在排序字段中输入:Class,并选择升序排序方式。表示结果将根据Class字段进行升序排列。
  6. 在分组字段中输入:Class,ColorID。表示根据Class字段分组后,再根据ColorID字段进行分组。
  7. 在保留结果字段中输入:Class, ColorID, Count(SmUserID) as ProvinceCount。

    表示在结果中保留Class,ColorID字段。并根据Class和ColorID字段计算每个分组中存在的省份个数,将计算结果保存在ProvinceClassCount字段中。

  8. 在结果显示中勾选浏览属性表。
  9. 勾选保存查询结果,设置查询结果所在的数据源和数据集名称。
  10. 单击查询,即可弹出结果属性表窗口,窗口中显示的内容如下图: