在整理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)
2、在 COMPUTE 子句中加入BY 关键字:
SELECT type, price, advance
FROM titles
ORDER BY type
COMPUTE SUM(price), SUM(advance) BY type
![group by 与compute对比 - 贾琳(shan9liang) - 贾琳的博客](http://img.ph.126.net/XNSHTl5BKyMvLQz-0MCY1w==/956170495886421831.png)
3、仅使用group by子句:
SELECT type, SUM(price), SUM(advance)
FROM titles
GROUP BY type
我们看到:
在第三张图中,仅使用group by子句的结果集中,只有合计数据,而没有原数据的明细。
在第一张图中仅使用compute子句的结果集中既有原数据,又把合计结果放到了最后。
在第二张图中,使用computeby子句的结果用12 个结果集返回,六个组中的每个组都有两个结果集。每个组的第一个结果集是一个行集,其中包含选择列表中所请求的信息(原数据)。每个组的第二个结果集包含 COMPUTE 子句中两个 SUM 函数的合计结果。