Stairway to T-SQL DML Level 7

这里写图片描述该系列
这篇文章是阶梯系列的一部分:通往T-SQL DML的阶梯。
通过使用SQL Server的Transact-SQL (T-SQL)方言,这个阶梯将为您提供如何使用SQL Server表数据的基本理解。DML是数据处理语言,是处理数据的语言的方面。它包括语句选择、插入、更新和删除。这个阶梯将提供一些SQL语言的历史和一些关于集合理论的一般概念。每个级别都将建立在之前的级别上,所以当您完成时,您将很好地理解如何从SQL Server中选择和修改数据。
在阶梯6中,我向您展示了如何使用ORDER BY子句对数据进行排序。这使您可以根据单个或多个列对详细记录进行排序。如果您希望在特定记录中查看数据,那么详细的数据非常好,但是有时候您需要将详细的数据汇总到汇总值中。总结您可以使用GROUP BY子句完成的数据。
有两种类型的GROUP BY子句。一种被称为简单的GROUP BY子句,另一种则提供了简单的概括,称为general GROUP BY子句。这两种类型的主要区别是简单的GROUP BY只包含GROUP BY子句,而general GROUP BY子句包含其他操作符,如ROLLUP和CUBE。
在本文中,我将介绍如何使用简单的group BY子句对数据进行分组。在后续的一篇文章中,我将讨论更复杂的general GROUP BY子句。
简单的GROUP BY子句
使用simple GROUP BY子句可以根据单个列、多个列或表达式聚合数据。根据GROUP BY子句中指定的列和/或表达式,只对每个惟一的值返回一个汇总行。当SQL Server通过子句处理一个组时,它通过惟一的列或表达式值对详细记录进行分组,然后根据选择列表中包含的聚合函数对每个集合进行总结。
为了更好地理解如何使用GROUP BY,让我们假设您有一个表,其中包含了不同商店的详细销售信息,您希望通过存储来总结总的销售额。您可以使用GROUP BY子句来聚合每个商店的总销售额。在本例中,您将分组的唯一列将是存储名称,而要聚合的列将是销售额。您的结果将显示每个惟一的存储名的一行,并且每个存储的行将包含该存储的销售额之和。
通过查询,SQL Server对哪些列可以包含在一个组的选择列表中有一些限制。查询组的选择列表中指定的每一列都需要归入以下类别之一:
•在GROUP BY子句中指定的列。
•在GROUP BY子句中指定的表达式。
•从聚合函数返回的值。
如果一个列不属于这些类别之一,那么当您试图通过查询运行您的组时,您将会得到一个错误。注意,GROUP BY子句中包含的列或表达式不需要在select列表中。
让我通过几个示例来帮助演示如何使用simple GROUP BY子句获得汇总值。
简单的GROUP BY子句的示例数据。
为了演示如何使用一个简单的GROUP BY子句,我需要构建一些示例数据。我提供了一个脚本来创建我的示例数据,这样您就可以运行本文提供的示例代码。使用清单1中的脚本构建并填充示例表。这里写图片描述这里写图片描述

猜你喜欢

转载自blog.csdn.net/hulusi1103/article/details/80040237
今日推荐