sql中使用组的详细说明

按组语句用于将聚合函数组合成根据一个或多个列对结果集进行分组。

1。概述



组字面上是指数据按指定的规则分组。所谓分组就是把一个数据集分成几个小区域,然后处理几个小域的数据。



2。原表






三.简单的组

例1

选择类别、和(数量)作为数字,按类别从一组中选择

返回下表,实际上是分类汇总。






4,按顺序分组



例2

选择类别,金额(数量)的数量,从一组由秩序和类别(数量)描述

返回下表






订单的数量和属性的总和不能用于访问SQL Server,但它是可能的。



5中选定的字段约束,按组



例3

选择类别,笔金额(数量),从一组由类别降序分类排序

示例3将在执行后提示错误,如下图所示,这是一个值得注意的问题。在选定的字段中,它将被包含在分组语句中作为分组的基础,或者将它包含在聚合函数中。






6,按组分组



例4

选择类别、摘要、和(数量)作为数字,并从一个组中按类别分类,总结

在示例4中,可以指定摘要字段,因为摘要字段包含在多列数据包中,执行结果如下所示






多列分组实际上是根据多个列的值分组的(类别+抽象)。在例4中,我们可以看到,2001、13、2001、11和2,两个记录,2001。



虽然在SQL Server中支持所有组,但在未来的微软SQL Server版本中,将删除所有组,以避免在新开发中使用。在访问中不支持组,但访问也由多列组支持,并且SQLServer中的SQL可以在Access中写入。

选择类别、摘要、和(数量)作为数字,并按类别按摘要分组

7,按组和聚集函数



在示例3中,我们提到了按SELECT语句指定的字段必须按字段分组。如果其他字段希望出现在SELECT中,则必须将它们包含在聚合函数中。公共聚合函数如下所示:



功能

影响

支持



总和(列名)



总结



马克斯(列名)



最大值



MIN(列名)



最小值



AVG(列名)



平均值



第一(列名)



第一个记录



只有访问支持



最后(列名)



最后的记录



只有访问支持



计数(列名)



统计记录数



注意和计数的区别(*)



示例5:寻找每组的平均值

选择类别,平均值(数量)作为一个组的平均值按类别;

示例6:计算每个组中的记录数

选择类别,将(*)按组按类别记录(*);

示例7:计算每个组中的记录数



8、有和在哪里的区别

WHERE子句的功能是在分组查询结果之前删除不符合条件的行,即在分组前过滤数据,条件不能包含多集合函数,并使用条件过滤特定行。

子句的功能是过滤满足条件的组。这是在分组后过滤数据。在这种情况下,它通常包含多集合函数,过滤具有条件的特定组,并用多个分组标准进行分组。



例8

选择类别,和(数量)作为数字和从

按类别组

有(数量)> 18

样品9的组合使用:有和在哪里

从中选择类别、和(数量)

在哪里是GT,8

按类别组

有和(量)gt;10

9,计算和计算



从一个数字> 8中选择*

实施结果:




示例10:计算



数的选择*从哪里> 8 ompute最大(数量),min(数量),AVG(数量)



执行的结果如下:






计算子句可以观察查询结果的数据细节或统计所有列数据,如马克斯、min和AVG,在情况10中,结果由SELECT列表和计算统计数据组成。



例11:计算



按类别编号> 8顺序选择*,按类别计算max(数量)、最小(数量)、平均(数量)。



执行的结果如下:






示例11与示例10、按类排序和按类进行比较。实例10的执行结果实际上按组(a、b和c)显示,每个组由重组数据列表和重组数统计结果组成。



计算子句必须与BY子句一起使用。

计算…通过与组比较,组只能得到各组数据的统计结果,但不能看到各组数据。



在实际开发中,计算和计算的作用不是很大,SQLServer支持计算和计算,而访问不支持。