汇总计算通常是指根据指定的分组字段逐行进行汇总,例如,在代码清单3-5中将通过GROUP BY子句对订单的折扣信息进行平均计算,获得每个产品的平均折扣价格。
代码清单3-5 计算每个产品的平均折扣价格
SELECT sod.ProductID, AVG(sod.UnitPriceDiscount) FROM Sales.SalesOrderDetail AS sod GROUP BY sod.ProductId
在上面的示例中,GROUP BY子句后面是使用ProductId字段作为分组字段的,这样一来,从语法的要求上来讲,在查询的字段中也需要出现ProductId字段。可简单想象一下,假设在对销售数据进行分析时,要对每个产品都进行分析计算,而在计算的返回结果中不包括分组的条件,那么将很难区分不同的分组结果所代表的具体条件。因此,在SELECT语句后,需要将ProductId加入,然后才是需要进行分析计算的字段,以及相对应的函数。
GROUP BY子句还包括一些特殊的汇总方式,例如ROLLUP、CUBE等关键字实现的功能,这里便不再描述,详细的内容请参阅微软提供的SQL Server联机丛书。