版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。 [url]http://chenxing.blog.51cto.com/240526/44596[/url]
          COMPUTE子句使用聚合函数生成数据的汇总值。COMPUTE和COMPUTE BY子句之间的区别在于COMPUTE不仅显示汇总的信息,还显示详细信息。生成的汇总值显示为另一行。这样在同一结果集就可以同时看到详细信息行与汇总行。COMPUTE支持使用聚合函数AVG、COUNT、MIN、MAX和SUM。
    语法:Select 列名1,列名2……列名n from 表名
         order by列名1
         compute [by] 函数名(列名2)
 实例:
 a、 Use pubs
     select type,price from titles
     order by type
     compute avg(price)
 b、select type,advance from titles where type='business' or type='trad_cook'
    order by type
    compute sum(advance) by type
注意:
a)不允许DISTINCT关键字与行聚合函数一起使用。
b)COMPUTE子句中使用的列名必须出现在语句的选择列表中。
c)同一个语句中不能同时出现SELECT INTO和COMPUTE子句,这是因为包含COMPUTE的语句是以另一
  个结构生成行。
d)如果使用COMPUTE BY,就必须同时使用ORDER BY子句。列于COMPUTE BY后的列必须等同于
  ORDER BY 后出现的列或是ORDER BY 后的子集。它们必须具有相同的从左到右的顺序,从同一
  个表达式开始,并且不能跳过任何表达式。
SQL SERVER2000教程-第五章 处理数据 第八节 操作符
 
1.ROLLUP 操作符:使用Rollup操作符可以创建Group by 子句内元素的分类汇总和汇总。  它支持累计聚合,如求和和求平均。它反映了Group by 子句中使用的列和表达式的位置。
实例:
    Use pubs
    go
    Select stor_id,title_id,sum(qty) as 'total quantity' from sales
    group by stor_id,title_id with rollup
2.CUBE操作符(交叉汇总):使用CUBE操作符可以返回Group by 子句中每个元素的分类汇总。
  CUBE产生超聚合行,即由Group by 子句生成的行的信息的汇总。通过创建Group by 子句中
  列列表的所有可能的分组组合,生成超聚合行。
实例:
    Use pubs
    go
    Select stor_id,title_id,sum(qty) as 'Total quantity' from sales
    group by stor_id,title_id with cube
注意:
a)使用CUBE时不支持使用具有Distinct特性的聚合函数,如COUNT(DISTINCT column)。
b)使用CUBE时,Group by 子句中最多可使用10列或10个表达式。
c)不支持Group by All。