SQL compute by 的使用

摘自:http://www.cnblogs.com/Gavinzhao/archive/2010/07/12/1776107.html

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

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

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

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

USE pubs

SELECT 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 数据类型。

转载于:https://www.cnblogs.com/nov5026/p/4545861.html

SQL compute by 的使用相关推荐

  1. SQL中Group By的使用,以及一些特殊使用方法

    转载自 https://www.cnblogs.com/jingfengling/p/5962182.html  1.概述 "Group By"从字面意义上理解就是根据" ...

  2. linux 计算百分比,计算百分比的分析函数

    以下sql是求出销售额在前二十名的客户,并把每个客户所占二十名的比例显示出来: select ih.line_number, en.entity_name, ct.customer_number || ...

  3. sqlplus 命令简单整理

    如果环境变量写在一个文件当中可以使用 START plusenv 设定格式 显示页行数 SHOW PAGESIZE SET PAGESIZE 60 将当前的sqlplus 的环境变量保存到一个文件中可 ...

  4. Oracle 学习笔记,,,经验总结整理的。。。

    cmd进入: 1. D:\oracle\ora92\bin> 2. sqlplus /nolog 3. conn sys/sys as sysdba sqlplus进入: username:sy ...

  5. 【impdp】IMPDP中的TRANSFORM参数--【数据泵】EXPDP导出表结构(真实案例)后传

    在上一篇文章[数据泵]EXPDP导出表结构(真实案例) 中:http://blog.itpub.net/26736162/viewspace-1657828/  ,由于表的storage参数存储很大, ...

  6. oracle 学习

    一.数据库语言部分 1. SQL语言:关系数据库的标准语言 2. PL/SQL:过程化语言Procedural Language 3. SQL*Plus:简单的报表,操作系统接口 4. Oracle ...

  7. java 必备面试必备

    1.JDK 和 JRE 有什么区别? JDK(Java Development Kit),Java开发工具包 JRE(Java Runtime Environment),Java运行环境 JDK中包含 ...

  8. SQL*Plus break与compute的简单用法

    [img]http://dl2.iteye.com/upload/attachment/0099/4950/75ee3f77-368a-30c4-a9e5-1e6949c09ae8.jpg[/img] ...

  9. SQL 统计分组 Group By和Compute By的整理

    在日常的项目开发中数据统计方面大家都常常用到Groub By进行分组,可能很少人用Compute By吧,我今天也是第一次使用,以前没有写博客的习惯,只是把自己的经验都整理起来都保存到了YX笔记当中, ...

最新文章

  1. 正则中除了空格还有什么标识间距
  2. Ubuntu SSH Algorithm negotiation failed
  3. 企业级 oracle11G r2 DataGuard 安装配置
  4. 你想象中的实习是什么样的?
  5. RabbitMQ消息
  6. 二维map —— HDU1263
  7. 10 个十分难得的 javascript 开发经验
  8. 与你同行,才能无障碍
  9. win7普通家庭版硬盘分区
  10. Python使用TCP协议编写会聊天的小机器人
  11. 自定义OutputFormat案例实操
  12. python 基础复习
  13. 小甲鱼Python第二十八讲(文件)
  14. PRML Chapter01 练习题Exercise
  15. gre红宝书词汇量是多少?考试够用吗?
  16. C++实现各种进制转换
  17. fastjson 1.2.24 反序列化导致任意命令执行漏洞
  18. 本科论文的标准格式是什么样的?
  19. 【Excel提取数字】用5个简单公式从混合文本中提取数字
  20. 陶哲轩实分析定理 11.4.3 $\max$与$\min$保持黎曼可积性

热门文章

  1. python序列类型-Python(第八课,序列类型)
  2. python3d动态图-Python图像处理之gif动态图的解析与合成操作详解
  3. python编程语言能干什么-python编程语言的优势与劣势--python能干啥
  4. python培训深圳-深圳哪里有Python培训?
  5. python画曲线-利用python画出AUC曲线的实例
  6. python拼音怎么写-Python 获取中文字拼音首个字母的方法
  7. python 是什么类型的语言-python到底是什么类型的语言
  8. python编程 语言-python编程语言有什么用途
  9. python2.7爬虫实例-用案例让你一文搞懂python网络爬虫
  10. php和python区别-python与php比较