通过按间隔或面积对值进行重分类来对输入值进行分组的方法是,按一系列相等的指定间隔划分值的整个范围(相等间隔),或者通过将各个像元数量划分到一定数量的组中并保证每组分到的像元数量始终不变(相等面积)。
要按相等间隔划分值的范围,您可以通过工具按间隔或面积对输入栅格进行重分类。例如,如果输入栅格中值的范围为 1 到 200,而要分割的间隔数为 10,则输出栅格中将含有介于 1 到 10 之间的 10 个值。输入栅格中值介于 1 到 20 之间的像元将指定为 1,值介于 21 到 40 之间的像元将指定为 2,依此类推。
在下例中,基础栅格中的原始值将按 10 个相等间隔进行重分类,从而指定经过重分类的新值。基础栅格中值的范围介于 1 到 20 之间,而输出栅格中值的范围介于 1 到 10 之间。
同按相等间隔进行分割类似,按相等面积将栅格分割为几个组也需要定义将输出栅格分割成组的数量。定义好组数后,分割工具将根据各区域的像元数量尝试将数量相等的像元数量分配到对应的组中。输入栅格中各个区域的值的数量和像元数量以及指定的组数将决定各个输出值或各组中所含像元数量近乎相同的程度。
在下例中,基础栅格中的原始值将重分类为五个等同的区域,各区域分得的像元数量保持不变(尽可能接近)。
按间隔或面积将值进行重分类,需要同时考虑栅格中的所有值及其分布,然后再将这些值重分类到一定数量的组中。在鹿栖息地假设分析中,适宜性模型的输入栅格可设定为基于鹿对远离公路的位置的偏爱。您可通过现有的公路创建一幅距离地图。不必将数千个距离值中的每个值逐个重分类到一个 1 至 10 的鹿栖息地偏好范围,只需将这些值分割为 10 组。对于距离公路最远的组,鹿栖息地偏好值将设为最高值 10,而最接近公路的组值则设为 1。
您可能需要在确定合理数量的类别后按间隔进行重分类,并且输出类别的值所基于的相对等级与输入值基本相同。如果输入数据是连续的,便属于此种情况,因为对于连续数据,这些值可能涉及到某参考现象或某参考点。因此,通过分割重分类工具生成的输出类将与输入值的原始相对等级相对应。上述距公路距离的示例表明的是可按相对等级进行重分类的连续数据。通常,不能按照间隔对分类数据(如,土地利用类型)进行重分类。
如果分类数据代表的是相似的要素类型,则可按面积对分类数据进行重分类。这些值不需要基于相对等级,因为各区域将根据每个区域中的像元数量而不是它们的值进行划分。例如,输入栅格可表示经营林中具有不同类型松柏类树木的多个区域。您可能希望将该森林划分为 10 个松柏类树木数量相等的研究站点。
利用 group by 子句将表中的数据分成若干组:
注意:查询列表比较特殊,要求是分组函数和 group by 后出现的字段
(1)分组前筛选
使用 where 可以做分组前筛选,从表中直接筛选掉不符合条件的数据。
(2)分组后筛选
分组后使用 having 过滤分组:
① 行已经被分组;
② 使用了组函数;
③ 满足 having 子句中条件的分组将被显示;
注意:非法使用组函数
① 不能在 where 子句中使用组函数;
② 可以在 having 子句中使用组函数;
(1)分组查询中的筛选条件分为两类:
(2)group by 支持单个字段分组,多个字段分组(多个字段之间使用逗号隔开,没有顺序要求)表达式或函数(相对较少)
(3)也可以添加排序(排序放在整个分组查询的最后)
思考1:分组函数做筛选能不能放在where后面
一般来讲,能用分组前筛选的,尽量使用分组前筛选,提高效率
(1)查询每个工种的最高工资
(2)查询每个工种的员工平均工资
(3)查询每个位置上的部门个数
(1)查询邮箱中包含 a 字符的,每个部门的平均工资
(2)查询有奖金的每个领导手下员工的最高工资
(1)查询哪个部门的员工个数大于2
① 查询每个部门的员工个数
② 根据①的结果进行筛选,查询哪个部门的员工个数 > 2
(2)查询每个工种有奖金的员工的最高工资>12000的工种编号和最高工资
① 查询每个工种有奖金的员工的最高工资
(3)查询领导编号>102的每个领导手下的最低工资>5000的领导编号是哪个,以及其最低工资
① 查询每个领导手下的最低工资
② 添加筛选条件,编号 > 102
③ 添加分组后筛选,最低工资大于 5000
(1)每个工种有奖金的员工的最高工资>6000的工种编号和最高工资,按最高工资升序
(2)查询每个部门,每个工种的平均工资,且按平均工资的高低显示
(1)查询每个工种每个部门的最低工资,并按最低工资降序
(1)按员工姓名的长度分组,查询每一组的员工个数,筛选员工个数 > 5 的有哪些
① 查询每个长度的员工个数
② 添加筛选条件
也可以使用别名:
1、查询各job_id的员工工资的最大值,最小值,平均值,总和,并按job_id升序
2、查询员工最高工资和最低工资的差距(DIFFERENCE)
3、查询各个管理者手下员工的最低工资,其中最低工资不能低于6000,没有管理者的员工不计算在内
4、查询所有部门的编号,员工数量和工资平均值,并按平均工资降序
5、选择具有各个job_id的员工人数