`
Neil_yang
  • 浏览: 130068 次
  • 性别: 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语句展示了如何使用`COMPUTE BY`计算`titles`表中`price`和`advance`的总和: ```sql USE pubs SELECT type, price, advance FROM titles ORDER BY type COMPUTE SUM(price), SUM(advance) ``` 这个...

    compute by与compute

    总的来说,`COMPUTE`和`COMPUTE BY`是用于对查询结果进行分组聚合的老式语法,它们在现代SQL中可能被更现代的`GROUP BY`和`OVER`子句替代,但理解这些概念对于理解数据库的历史和一些旧系统的查询结构仍然很重要。

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

    虽然在文件中并未提供COMPUTE BY子句的具体使用示例,但可以了解到它与GROUP BY类似,用于分组数据并执行聚合函数,但COMPUTE BY在SQL Server的现代版本中已被更灵活的聚合函数和语句所替代。 4. 数据聚合与分组:...

    C#使用Compute By查询数据库

    本文将深入探讨如何使用`Compute By`查询来处理数据库数据,这在C#中可能并不常见,但非常实用。`Compute By`查询允许我们对数据库进行聚合操作,如计算平均值、求和、最大值和最小值等,而无需显式地定义每条记录。...

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

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

    sql中的高级查询语句

    Compute生成多个结果集是指使用Compute和Compute By子句来生成多个结果集。Compute子句需要指定的信息包括可选的BY关键字、行聚合函数名称和要对其执行行聚合函数的列。Compute生成的结果集可以显示为分离的结果集。...

    SQL数据库试题选择填空

    GROUP BY子句通常与ORDER BY、COMPUTE BY等配合使用,以便对分组后的结果进行排序、计算等操作。 **10. SQL Server支持定义游标,用于逐行处理数据集:** - **A:** CREATE CURSOR - **B:** ALTER CURSOR - **C:** ...

    sql 教程 sql server 2000

    #### 3.1 使用 COMPUTE 和 COMPUTE BY `COMPUTE` 和 `COMPUTE BY` 可以在查询结果中添加汇总信息。例如,计算所有学生的总成绩: ```sql SELECT sno, cno, degree FROM score WHERE sno IN (103, 105) ORDER BY ...

    sql-compute:以 SQL 风格计算数据的 JS 库

    2. **聚合操作**:类似于SQL的GROUP BY和AGGREGATE函数(如COUNT、SUM、AVG等),`sql-compute`可以对数据进行分组并执行聚合计算。 3. **排序**:使用ORDER BY子句对查询结果进行升序或降序排序。 4. **连接操作*...

    SQL Server视频教程(以2000为例,结合使用范例,深入浅出,图文并茂)

    本教程将深入探讨SQL的高级应用,包括使用COMPUTE进行聚合计算、理解不同类型的联接操作、管理特殊数据类型以及掌握事务处理和锁的使用。 首先,COMPUTE是SQL中用于聚合数据的工具,它可以在查询结果的底部生成一个...

    Sql Server与Oracle的区别

    - **SELECT语句**:尽管基本语法相似,但Oracle支持特定的优化提示和集合运算符如START WITH和CONNECT BY,以及INTERSECT和MINUS,这些在Sql Server中需要通过其他方式实现,比如使用EXISTS和NOT EXISTS子句。...

    SQL实例集锦(很实用)

    `SELECT`、`GROUP BY`、`COMPUTE`和`ORDER BY`可以结合使用,以灵活地查看和分析数据。例如,`SELECT column1, SUM(column2) FROM table_name GROUP BY column1 COMPUTE SUM(column2) ORDER BY SUM(column2) DESC;`...

    总结下sqlserver group by 的用法

    -- 使用COMPUTE BY SELECT City, OrderDate, OrderID FROM SalesInfo ORDER BY City COMPUTE COUNT(OrderID) BY City; ``` 这两个示例都会在原始数据后显示每个组的订单总数。 请注意,`ALL`不能与`CUBE`和`...

    sql语句帮助手册笔记

    4. 使用COMPUTE BY时,不能同时使用ORDER BY。 ##### 5. INSERT 语句 用于向表中插入新记录。基本语法如下: ``` INSERT [INTO] table [(column_list)] VALUES (data_values); ``` - 如果未指定列名,则每一列都...

    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 为...

    数据库实验四:SQL数据查询.doc

    - **查询每个学生的所有成绩的最高成绩、最低成绩、平均成绩和所考课程的门数**:使用聚合函数和GROUP BY。 - 示例代码: ```sql SELECT 学号, MAX(成绩) AS 最高成绩, MIN(成绩) AS 最低成绩, AVG(成绩) AS 平均...

    SQL语句 UNION 和 UNION ALL 使用

    ### SQL语句 UNION 和 UNION ALL 使用详解 #### 一、SQL UNION 和 UNION ALL 的基本概念 **UNION** 和 **UNION ALL** 是 SQL 语言中用于合并两个或多个 SELECT 语句结果集的关键字。这两种操作符都可以帮助我们...

    西南交通大学第四章-数据库作业.docx

    - 使用`COMPUTE BY`指定分组。 - 注意,`SELECT ... INTO`与`COMPUTE`不兼容。 - 当使用`UNION`时,`ORDER BY`子句不可用。 #### 五、T-SQL中的SELECT语句 - 查询所有数据行和列。 - 查询部分行和列。 - 使用列...

    sql子查询总结

    * 子查询不能包含 COMPUTE 或 FOR BROWSE 子句 * 如果同时指定了 TOP 子句,则只能包含 ORDER BY 子句 * 嵌套限制根据可用内存和查询中其他表达式的复杂程度的不同而不同,但嵌套到 32 层是可能的 * 个别查询可能不...

Global site tag (gtag.js) - Google Analytics