版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。[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 后的子集。它们必须具有相同的从左到右的顺序,从同一 个表达式开始,并且不能跳过任何表达式。 本文出自 51CTO.COM技术博客 |
实例:
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。
本文出自 51CTO.COM技术博客