首页 理论教育 SQLServer2008:使用GROUPBY简单分组查询

SQLServer2008:使用GROUPBY简单分组查询

时间:2023-11-02 理论教育 版权反馈
【摘要】:而使用GROUP BY进行单列分组是使用GROUP BY的最简单方式,单列分组就是指在GROUP BY子句中使用单个列生成分组统计数据。GROUP BY子句的语法规则如示例代码6-1所示。

SQLServer2008:使用GROUPBY简单分组查询

1.常用的聚合函数

数据库查询的主要特点之一就将各种分散的数据按一定规律、条件进行分类汇总,得出统计结果。SQL Server 2008提供了聚合函数和GROUP BY子句来完成简单的分组查询统计。在应用分组查询之前先介绍几个常用的聚合函数:

➢ AVG:求平均值

➢ COUNT:统计函数,计算组中成员个数(组中记录行数)

➢ MAX:求最大值

➢ MIN:求最小值

➢ SUM:求和

从上述对函数的描述,可以看出聚合函数可以对一组数据返回单一的值,所以称为聚合函数。除COUNT函数外,聚合函数忽略空值。

2.GROUP BY子句及单列分组

对查询结果进行分组统计,通过GROUP BY子句来完成的。而使用GROUP BY进行单列分组是使用GROUP BY的最简单方式,单列分组就是指在GROUP BY子句中使用单个列生成分组统计数据。进行单列分组时会基于列的每个不同值生成数据统计结果。GROUP BY子句的语法规则如示例代码6-1所示。

分组表达式是分组的依据,如果分组表达式中有多个表达式,就用“,”分隔。

例如:查询EBuy电子商城购物系统中orders表(订单表)中目前订单总数,如示例代码6-2,执行结果如图6-1所示。

图6-1统计了orders表中总的订单份数(即,把整个表的记录作为一个组,求总记录数)。

图6-1 分组统计组中成员数

在示例代码6-2所示的例子的基础上,如果需要知道每种商品的所有订单的平均订购商品数。此时需要按商品种类进行分组查询,然后求得每种商品每份订单订购的商品的平均数量。为了能很好地理解求平均值函数和分组子句的作用,我们先查看不分组统计的情况,如示例代码6-3,执行结果如图6-2所示。(www.xing528.com)

图6-2 非分组统计查询

从图6-2可以看到一共有四份订单(共计4行记录),有三种商品(ComID列有“20080001”“2010002”“2010001”代表不同商品号),第三份订单和第四份订单订购的是同一种商品(商品号相同都为“2010001”)。

在对图6-2“非分组统计查询”分析的基础上进行分组查询统计,求每种商品所有订单平均订购商品数,如示例代码6-4,执行结果如图6-3所示。

图6-3 统计分组的列的平均值

从图6-3可以看出,商品号为“2010001”的两笔订单平均订购的商品数为“15”。

小贴士

当执行SELECT语句时,如果选择列表同时包含列、表达式、分组函数,那么这些列和表达式必须出现在GROUP BY子句中。

3.多列分组

使用GROUP BY进行多列分组,多列分组就是指在GROUP BY子句中使用多个列生成分组统计数据。进行多列分组时会基于多个列的不同值生成数据统计结果。

例如:在EBuy应用系统的orders表(订单表)中,如果我们需要知道每个客户、每种商品的所有订单平均订购商品数。使用CusID(客户代码)和ComID(商品代码)进行分组查询统计,如示例代码6-5,执行结果如图6-4所示。

图6-4 多列分组

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈