SQL查询分组统计示例
SuperMap 中的 SQL 查询功能可以根据指定的某个(或多个)字段将查询结果进行分组,使指定字段上有相同值的记录分在一组。
指定单个字段分组
下面将以示范数据PopulationAndEconomy数据源中的Province_R数据为例,分组统计我国东部、西部、中部、东北部地区的省份数量。
- 将示范数据中的PopulationAndEconomy数据源打开到工作空间管理器中。
- 在空间分析选项卡->查询组中选择SQL查询。
- 在SQL查询对话框中,数据源选择PopulationAndEconomy,数据集选择Province_R。
- 勾选SQL编辑复选框,并清空SQL语句输入框中的内容。
- 在高级节点下中将分组字段设置为:Class。
- 在结果保留字段中输入:Class, Count(SmID) as ProvinceClassCount。
表示在结果数据中保留Class字段。按照分组字段Class计算每个分组中的省份个数,并将结果保存在ProvinceClassCount字段中。
- 在结果显示中勾选浏览属性表。
- 勾选保存查询结果,设置查询结果所在的数据源和数据集名称。
- 单击查询,即可弹出结果属性表窗口,窗口中显示的内容如下图:
指定多个字段分组
您只需要在分组字段下拉复选框中勾选或直接输入多个字段信息,程序将首先按照输入的第一个字段对属性表进行分组,再根据第二个字段分组,依此类推。
下面仍以示范数据PopulationAndEconomy数据源中的Province_R数据为例,基于各地区省份数量再按照地图的颜色进行分组统计。
- 将示范数据中的PopulationAndEconomy数据源打开到工作空间管理器中。
- 在空间分析选项卡->查询组中选择SQL查询。
- 在SQL查询对话框中,数据源选择PopulationAndEconomy,数据集选择Province_R。
- 勾选SQL编辑复选框,并清空SQL语句输入框中的内容。
- 在排序字段中输入:Class,并选择升序排序方式。表示结果将根据Class字段进行升序排列。
- 在分组字段中输入:Class,ColorID。表示根据Class字段分组后,再根据ColorID字段进行分组。
- 在保留结果字段中输入:Class, ColorID, Count(SmUserID) as ProvinceCount。
表示在结果中保留Class,ColorID字段。并根据Class和ColorID字段计算每个分组中存在的省份个数,将计算结果保存在ProvinceClassCount字段中。
- 在结果显示中勾选浏览属性表。
- 勾选保存查询结果,设置查询结果所在的数据源和数据集名称。
- 单击查询,即可弹出结果属性表窗口,窗口中显示的内容如下图: