1、概述 2、原始表 3、简单Group By 4、Group By 和 Order By 5、Group By中Select指定的字段限制 6、Group By All 7、Group By与聚合函数 8、Having与Where的区别 9、Compute 和 Compute By 1、概述 “Group By”从字面意义上理解就是根据“By”指定的规则对数据进行分组,所谓的分组就是将一个“数据集”划分成若干个“小区域”,然后针对若干个“小区域”进行数据处理。 2、原始表 3、简单Group By 示例1
|
1 2 3 |
select 类别, sum(数量) as 数量之和 from A group by 类别 |
返回结果如下表,实际上就是分类汇总。 4、Group By 和 Order By 示例2
|
1 2 3 4 |
select 类别, sum(数量) AS 数量之和 from A group by 类别 order by sum(数量) desc |
返回结果如下表 在Access中不可以使用“order by 数量之和 desc”,但在SQL Server中则可以。 5、Group By中Select指定的字段限制 示例3
|
1 2 3 4 |
select 类别, sum(数量) as 数量之和, 摘要 from A group by 类别 order by 类别 desc |
示例3执行后会提示下错误,如下图。这就是需要注意的一点,在select指定的字段要么就要包含在Group By语句的后面,作为分组的依据;要么就要被包含在聚合函数中。 6、Group By All 示例4
|
1 2 3 |
select 类别, 摘要, sum(数量) as 数量之和 from A group by all 类别, 摘要 |
示例4中则可以指定“摘要”字段,其原因在于“多列分组”中包含了“摘要字段”,其执行结果如下表 “多列分组”实际上就是就是按照多列(类别+摘要)合并后的值进行分组,示例4中可以看到“a, a2001, 13”为“a, a2001, 11”和“a, a2001, 2”两条记录的合并。 SQL Server中虽然支持“group by all”,但Microsoft SQL Server 的未来版本中将删除 GROUP BY ALL,避免在新的开发工作中使用 GROUP BY ALL。Access中是不支持“Group By All”的,但Access中同样支持多列分组,上述SQL Server中的SQL在Access可以写成
|
1 2 3 |
select 类别, 摘要, sum(数量) AS 数量之和 from A group by 类别, 摘要 |
7、Group By与聚合函数 在示例3中提到group by语句中select指定的字段必须是“分组依据字段”,其他字段若想出现在select中则必须包含在聚合函数中,常见的聚合函数如下表: 函数 作用 支持性 sum(列名) 求和 […]
View Details