`
Neil_yang
  • 浏览: 126512 次
  • 性别: Icon_minigender_1
  • 来自: 珠海
社区版块
存档分类
最新评论

SQL compute by 的使用

阅读更多

GROUP BY子句有个缺点,就是返回的结果集中只有合计数据,而没有原始的详细记录。如果想在SQL SERVER中完成这项工作,可以使用COMPUTE BY子句。COMPTE生成合计作为附加的汇总列出现在结果集的最后。当与BY一起使用时,COMPUTE 子句在结果集内生成控制中断和分类汇总。

下列 SELECT 语句使用简单 COMPUTE 子句生成 titles 表中 price 及 advance 的求和总计:

USE pubsSELECT type, price, advance
FROM titles
ORDER BY type
COMPUTE SUM(price), SUM(advance)


下列查询在 COMPUTE 子句中加入可选的 BY 关键字,以生成每个组的小计:

USE pubsSELECT type, price, advance
FROM titles
ORDER BY type
COMPUTE SUM(price), SUM(advance) BY type

此 SELECT 语句的结果用12 个结果集返回,六个组中的每个组都有两个结果集。每个组的第一个结果集是一个行集,其中包含选择列表中所请求的信息。每个组的第二个结果集包含 COMPUTE 子句中两个 SUM 函数的小计。

 

compute by 子句的规则:

(1)不能将distinct与行统计函数一起使用

(2)compute ??? by 子句中 ???出的列必须出现在选择列表中

(3)不能在含有compute by 子句的语句中使用select into 子句,因为包括compute 子句的语句会产生不规则的行。

(4)如果使用了compute by子句,则必须使用order by 子句, 而且compute by子句中的列必须包含在order by 子句中,并且对列的前后顺序和起始项都要一致(说白了compute by子句中的列必须是order by子句中列表的全部,或者前边的连续几个)。

(5)如果compute 省略了 by ,则order by 也可以省略

(6)如果compute by 子句包含多列时,会将一个组(第一个列分的组)分成若干个子组(利用后面的列),并对每层子组进行统计。

(7)使用多个compute by子句时,会分别按不同的组统计出结果。详细信息还是按照正常的第一个分组方式显示。

(8)compute by 子句中可以使用多个统计函数,他们互不影响

(9)compute by 子句中可以不包含by ,而只用compute  此时不对前面信息分组,而只对全部信息进行统计。

 

比较 COMPUTE 和 GROUP BY
COMPUTE 和 GROUP BY 之间的区别汇总如下:
GROUP BY 生成单个结果集。每个组都有一个只包含分组依据列和显示该组子聚合的聚合函数的行。选择列表只能包含分组依据列和聚合函数。

COMPUTE 生成多个结果集。一类结果集包含每个组的明细行,其中包含选择列表中的表达式。另一类结果集包含组的子聚合,或 SELECT 语句
的总聚合。选择列表可包含除分组依据列或聚合函数之外的其它表达式。聚合函数在 COMPUTE 子句中指定,而不是在选择列表中。
下列查询使用 GROUP BY 和聚合函数;该查询将返回一个结果集,其中每个组有一行,该行中包含该组的聚合小计:
USE pubs
SELECT type, SUM(price), SUM(advance)
FROM titles
GROUP BY type
 
说明 在 COMPUTE 或 COMPUTE BY 子句中,不能包含 ntext、text 或 image 数据类型。

分享到:
评论

相关推荐

    探讨SQL compute by的使用分析

    如果想在SQL SERVER中完成这项工作,可以使用COMPUTE BY子句。COMPTE生成合计作为附加的汇总列出现在结果集的最后。当与BY一起使用时,COMPUTE 子句在结果集内生成控制中断和分类汇总。 下列 SELECT 语句使用简单 ...

    SQL Server中GROUP BY与COMPUTE BY子句比较探讨.pdf

    SQL Server中GROUP BY与COMPUTE BY子句比较探讨.pdf

    Delphi使用Compute和Compute By进行查询的例子

    摘要:Delphi源码,数据库应用,Compute Delphi使用Compute和Compute By进行查询的例子,点击对应的查询程序内部即可执行不同的查询,这对于学习Delphi的数据库编程是相当有帮助作用的。本例运行截图如上所示。

    SQL21日自学通

    使用SQL 来生成SQL 语句的目的351 几个SQL*PLUS 命令352 SET ECHO ON/OFF353 SET FEEDBACK ON/OFF353 SET HEADING ON/OFF 353 SPOOL FILENAME/OFF353 START FILENAME354 ED FILENAME354 计算所有的表中的行数354 为...

    SQLServer2005考试题及答案

    ⑷ A、GROUP BY B、COMPUTE BY C、HAVING D、COMPUTE 5、语句DBCC SHRINKDATABASE (Sample, 25)中的25表示的意思是 A、25M B、剩余占整个空间的25% C、已用空间占整个空间的25% D、以上都不对 6、你是一个保险公司...

    SQL SERVER彻底查询

    sql 所有查询语句,如何使用全新的派生表 自连接 如何使用全新的pivot 如何使用全新的unpivot 如何使用全新的apply 如何使用全新的except 与intersect 运算符号 如何使用全新的“公用...Compute[by]字句的使用技巧

    sql试 题答案和试题

    C、ORDER BY,COMPUTE BY,GROUP BY D、GROUP BY,COMPUTE BY 10、在SQL SERVER服务器上,存储过程是一组预先定义并(1___)的Transact-SQL语句。可以用(2___)来声明游标。 ⑴ A、保存 B、编译 C、解释 D、...

    T-SQL高级查询

    where age > 20 order by age compute sum(age) by age; 对年龄大于的按照性别进行分组汇总年龄信息 select id, sex, age from student where age > 20 order by sex, age compute sum(age) by sex; 按照年龄...

    SQL培训第一期

    1 SQL基础 1.1 基本概念 结构化查询语言(Structured Query ...select后面出现的列,如果没有使用集合函数,必须出现在group by 中。 select sno,sname,sum(grade) from student group by sno,sname; //合法写法 select...

    SQL查询技巧(范例宝典)

     实例333 使用COMPUTE BY 487  10.10 聚合函数 488  实例334 利用聚合函数SUM对销售额进行汇总 488  实例335 利用聚合函数AVG求某班学生的平均年龄 490  实例336 利用聚合函数MIN求销售额、利润...

    Sybex - Mastering Visual Basic .NET Transact SQL (VBL).pdf

    We’ll start with the COMPUTE BY state- ment, which allows you to calculate totals on groups of the rows retrieved from the database. This statement looks and feels very much like the straight SQL ...

    SQL相关查询技术(有程序代码配合语句)

    COMPUTE BY计算 COMPUTE计算 DATEDIFF函数计算 FORMAT格式化函数改变日期 FROM字句多表查询 GROUP BY查询销售总金额 HAVING多表连接应用 HAVING过滤分组数据 IN查询表中的记录 IN子查询范围条件 left outer join查询...

    总结下sqlserver group by 的用法

    归纳一下:group by:ALL ,Cube,RollUP,Compute,Compute by 创建数据脚本 Create Table SalesInfo (Ctiy nvarchar(50), OrderDate datetime, OrderID int ) insert into SalesInfo select N’北京’,’2014-06-...

    SQL sever 实训

    SQL sever 2008 Rar! ?s X祕BwL0 17240671-1.sql ?年3月9日 --1.查询course表的所有信息(所有行所有列) USE Xk GO SELECT * FROM Course --有哪些种类的选修课?学分是多少 USE XK GO SELECT Kind,Credit FROM ...

    微软内部资料-SQL性能优化5

    SQL Server keeps track of which pages belong to a table or index by using IAM pages. If there is no clustered index, there is a sysindexes row for the table with an indid value of 0, and that row will...

    [详细完整版]7数据库.doc

    使用COMPUTE和COMPUTE BY子句 2. 使用GROUP BY子句与HAVING子句 3. 使用UNION子句 4. 嵌套查询 5. 多表查询 6. 在查询的基础上创建新表 前导知识: SELECT 语句的基本语法 SELECT <目标列名表> FROM <数据源表> ...

    SQL2005入门到精通(8)

    132 8.1.8 FOR子句 133 8.1.9 COMPUTE子句 133 8.1.10 DISTINCT和ALL关键字 135 8.1.11 EXCEPT和INTERSECT关键字 137 8.1.12 TOP n和TOP n PERCENT关键字 139 8.2 使用连接 140 8.2.1 内部连接...

    分组后分组合计以及总计SQL语句(稍微整理了一下)

    compute sum(COUNT(*)) 2)分组合计1: SELECT COUNT(*) FROM (SELECT 分组字段 FROM 表 GROUP BY 分组字段 )别名   3)分组合计2: SELECT COUNT(*) FROM (SELECT distinct 分组字段 FROM 表)别名 4)...

    SQL Server数据库技术

    GROUP BY生成单个结果集。每个组都有一个只包含分组依据列和显示该组之聚合的聚合函数的行。结果集规范,易与第三放开发集成 COMPUTE生成多个结果集。一类结果集包含

Global site tag (gtag.js) - Google Analytics