Blitz_Man

当一个人找不到出路的时候,最好的办法就是将当前能做好的事情做到极致,做到无人能及。...

compute
GROUP BY子句有个缺点,就是返回的结果集中只有合计数据,而没有原始的详细记录。如果想在SQL SERVER中完成这项工作,可以使用COMPUTE BY子句。COMPTE生成合计作为附加的汇总列出现在结果集的最后。当与BY一起使用时,COMPUTE 子句在结果集内生成控制中断和分类汇总。
1 不能将distinct与行统计函数一起使用
2 compute   by 中列出的列必须出现在选择列表中
3 不能在含有compute by 子句的语句中使用select into 子句,因为包括compute 子句的语句会产生不规则的行。
compute 用了 by子句,则必须使用order by , 且compute by中的列必须是order by列表的全部,或者前边的连续几个
5 compute 省略了 by ,则order by 也可以省略。
6 compute by 子句包含多列时,会将一个组(第一个列分的组)分成若干个子组(利用后面的列),并对每层子组进行统计。
7 compute by 子句中可以使用多个统计函数,他们互不影响。
8 compute 不包含by 时不对前面信息分组,而只对全部信息进行统计。
9 COMPUTE 所生成的汇总值在查询结果中显示为单独的结果集。
COMPUTE 生成的结果集
当 COMPUTE 带 BY 子句时,符合 SELECT 条件的每个组都有两个结果集:
每个组的第一个结果集是明细行集,其中包含该组的选择列表信息。
每个组的第二个结果集有一行,其中包含该组的 COMPUTE 子句中所指定的聚合函数的小计。
当 COMPUTE 不带 BY 子句时,SELECT 语句有两个结果集:
每个组的第一个结果集是包含选择列表信息的所有明细行。
第二个结果集有一行,其中包含 COMPUTE 子句中所指定的聚合函数的合计。
COMPUTE 和 GROUP BY比较
COMPUTE 和 GROUP BY 区别:
GROUP BY 生成单个结果集。每个组都有一个只包含分组依据列和显示该组子聚合的聚合函数的行。选择列表只能包含分组依据列和聚合函数。
COMPUTE 生成多个结果集。一种结果集包含每个组的明细行,其中包含选择列表中的表达式。
例子:
原始表:
部门 员工 工资 年龄
A             ZHANG     100    20
A             LI        200    21
A             WANG      300    22
A             ZHAO      400    23
B             DUAN      500    24
B             DUAN      600    25
1.GROUP BY
SELECT 部门,员工,SUM(工资)AS TOTAL,avg(年龄)as年龄
FROM PERSON
GROUP BY 部门,员工
结果:
部门 员工 工资 年龄
B             DUAN      1100    24
A             LI        200    21
A             WANG      300    22
A             ZHANG     100    20
A             ZHAO      400    23
2.COMPUTE
SELECT 部门,员工,工资,年龄
FROM PERSON
ORDER BY 部门,员工
COMPUTE  SUM(工资) ,avg(年龄)
结果:
部门 员工 工资 年龄
A             LI        200    21
A             WANG      300    22
A             ZHANG     100    20
A             ZHAO      400    23
B             DUAN      500    24
B             DUAN      600    25
sum avg
2100    22
(3)COMPUTE  BY
SELECT 部门,员工,工资,年龄
FROM PERSON
ORDER BY 部门,员工
COMPUTE  SUM(工资) ,avg(年龄) by 部门
结果
部门 员工 工资 年龄
A             LI        200    21
A             WANG      300    22
A             ZHANG     100    20
A             ZHAO      400    23
sum avg
1000    21
部门 员工 工资 年龄
B             DUAN      500    24
B             DUAN      600    25
sum avg
1100    24
阅读更多
文章标签: sql
个人分类: Sql
想对作者说点什么? 我来说一句

compute by与compute

2015年10月30日 34KB 下载

没有更多推荐了,返回首页

不良信息举报

compute

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭