SQL计算的使用分析

GROUPBY子句有一个缺点,返回的结果集是集合数据,没有原始的详细记录。如果你想在SQL Server做这个,你可以使用COMPUTEBY子句,计算机生成的骨料,作为一个额外的汇总列,出现在结果集的最后时用。由、COMPUTE子句生成控制中断和结果集的分类。

下面的SELECT语句使用一个简单的计算子句生成标题表中的价格和进度的总和:
复制代码代码如下所示:
使用酒吧
选择类型、价格、预付款
从标题
订单类型
计算和(价格)、和(预付)

通过查询关键字COMPUTE子句中加入可选,生成各个组小计:

使用酒吧
复制代码代码如下所示:
选择类型、价格、预付款
从标题
订单类型
按类型计算总和(价格)和(预付)

这个SELECT语句的结果返回12个结果集,六个组中的每个组有两个结果集。每组的第一个结果集是一个行集,其中包含选择列表中要求的信息。每个结果集的第二组包含一个计算子句,在两个和函数中包含一个计算子句。

计算子句规则:

(1)不可能使用具有行统计功能的显式

(2)计算在从句中外列必须出现在选择列表中。

(3)SELECT子句不能用于包含计算子句的语句,因为包含计算子句的语句会产生不规则行。

(4)如果使用按计算子句,则必须使用逐项子句,而在BY子句中的计算列必须包含在BY子句中,并且列序列和开始项必须是一致的(它计算子子句中的列必须是连续子句中的几个连续的订单列表,全部或前面)。

(5)如果计算省略,则按顺序也可以省略。

(6)如果计算子句包含多个列,将是一个组(第一列将使用子行划分为几个子组(组)),以及每个子组的统计信息。

(7)当使用多个计算子句时,结果由不同的组计算,详细信息显示在第一组中。

(8)许多统计函数可用于计算子句,它们不相互影响。

(9)计算子句不能包含,但此时只有计算不被前面的信息分组,但只有整个信息被计数。

比较计算和分组
计算和组之间的差异概括如下:
组通过生成一个结果集。每个组都有一行,它只包含一个基于组的列和一个聚合函数,该函数显示组的聚合。

计算生成多个结果集。一类的结果集包含每个组的详细信息,其中包含在选择列表的表达。另一类的结果包含了集团的subaggregation,或选择语句
聚合。选择列表可以包含除基于组的列或聚合函数以外的其他表达式。聚合函数在计算子句中指定,而不是在选择列表中。
下面的查询使用组和聚合函数;查询返回一个结果集,每个组都有一行,包括总聚合行组:
使用酒吧
选择类型、金额(价格)、金额(预付款)
从标题
组类型

结果表明,在计算或计算的条款,没有ntext文本或图像数据类型可以包含。