请教:sql的意思

[复制链接]
查看11 | 回复4 | 2007-1-16 17:14:42 | 显示全部楼层 |阅读模式
请问:下面这句sql的意思
selectcol1,col2 from table
order by col1
compute sum(col2) by col1
回复

使用道具 举报

千问 | 2007-1-16 17:14:42 | 显示全部楼层
COMPUTE应该是在结果集后加上一个统计行,sql server中好像可以用rollup和cube 来代替了,oracle中也有rollup和cube 的用法的;
例子:
SQL> select decode(grouping(userid),1,'总合',userid) userid,
2 sum(num1),sum(num2) from test1 t
3 group by rollup(userid);
USERID SUM(NUM1) SUM(NUM2)
---------- ---------- ----------
user00112 32
user00231 13
user00323 32
user00423 43
总合 89 120
当然你也可以这样写:
SQL> select decode(grouping(userid),1,'总合',userid) userid,
2 sum(num1),sum(num2) from test1 t
3 group by userid,rollup(userid);
不过结果跟上面的有点不一样的,而且在oracle中rollup和cube 的用法比sql server要更灵活些,
也可以参看下面的例子:
http://community.csdn.net/Expert ... 44.xml?temp=.458523
回复

使用道具 举报

千问 | 2007-1-16 17:14:42 | 显示全部楼层
谢谢
回复

使用道具 举报

千问 | 2007-1-16 17:14:42 | 显示全部楼层
COMPUTE BY 子句使您得以用同一 SELECT 语句既查看明细行,又查看汇总行。可以计算子组的汇总值,也可以计算整个结果集的汇总值。
COMPUTE 子句需要下列信息:
可选的 BY 关键字,该关键字可按对一列计算指定的行聚合。

行聚合函数名称;例如,SUM、AVG、MIN、MAX 或 COUNT。

要对其执行行聚合函数的列。
COMPUTE 生成的结果集
COMPUTE 所生成的汇总值在查询结果中显示为分离的结果集。包括 COMPUTE 子句的查询的结果类似于控制中断报表,即汇总值由指定的组(或称中断)控制的报表。可以为各组生成汇总值,也可以对同一组计算多个聚合函数。
当 COMPUTE 带有可选的 BY 子句时,符合 SELECT 条件的每个组都有两个结果集:
每个组的第一个结果集是明细行集,其中包含该组的选择列表信息。

每个组的第二个结果集有一行,其中包含该组的 COMPUTE 子句中所指定的聚合函数的小计。
当 COMPUTE 不带可选的 BY 子句时,SELECT 语句有两个结果集:
每个组的第一个结果集是包含选择列表信息的所有明细行。

第二个结果集有一行,其中包含 COMPUTE 子句中所指定的聚合函数的合计。
回复

使用道具 举报

千问 | 2007-1-16 17:14:42 | 显示全部楼层
oracle不支持COMPUTE BY 子句
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行