group by 与compute对比

来源:互联网 发布:mac 命令行 修复系统 编辑:程序博客网 时间:2024/06/06 03:47

在整理sql语句的过程中,觉得这两个有点相似,拿出来比比。

 

GROUP BY子句返回的结果集中只有合计数据,而没有原始的详细记录。

COMPTE生成合计作为附加的汇总列出现在结果集的最后,当与BY一起使用时,COMPUTE 子句在结果集内生成控制中断和分类汇总。

 

光看这两句,可能还有点模糊,我们先看下面的例子。

 

举例说明(目的:使用pubs数据库的titles表,生成price和advance的求和统计):

 

1、仅使用compute子句

SELECT type, price, advance

FROM titles

ORDER BY type

COMPUTE SUM(price), SUM(advance)

 group by 与compute对比 - 贾琳(shan9liang) - 贾琳的博客

 

2、在 COMPUTE 子句中加入BY 关键字:

SELECT type, price, advance

FROM titles

ORDER BY type

COMPUTE SUM(price), SUM(advance) BY type

group by 与compute对比 - 贾琳(shan9liang) - 贾琳的博客
 

3、仅使用group by子句:

SELECT type, SUM(price), SUM(advance)

FROM titles

GROUP BY type

 group by 与compute对比 - 贾琳(shan9liang) - 贾琳的博客

 

我们看到:

在第三张图中,仅使用group by子句的结果集中,只有合计数据,而没有原数据的明细。

在第一张图中仅使用compute子句的结果集中既有原数据,又把合计结果放到了最后。

在第二张图中,使用computeby子句的结果用12 个结果集返回,六个组中的每个组都有两个结果集。每个组的第一个结果集是一个行集,其中包含选择列表中所请求的信息(原数据)。每个组的第二个结果集包含 COMPUTE 子句中两个 SUM 函数的合计结果。
原创粉丝点击