SQL*Plus break与compute的简单用法
SQL*Plus break与compute的简单用法
在SQL*Plus提示符下输出求和报表,我们可以借助break与compute两个命令来实现。这个两个命令简单易用,可满足日常需求,其实质也相当于在编写SQL语句时使用分组及聚合函数。不同的是在报表中的分组的最下方或整个报表的最下方我们可以得到如sum,avg以及自定义的聚合字样。
一、break用法:
help break
BREAK
-----
Specifies where changes occur in a report and the formatting
action to perform, such as:
- suppressing display of duplicate values for a given column
- skipping a line each time a given column value changes
(In iSQL*Plus, only when Preformatted Output is ON)
- printing computed figures each time a given column value changes or at the end of the report.
Enter BREAK with no clauses to list the current BREAK definition.
BRE[AK] [ON report_element [action [action]]] ...
where report_element has the following syntax:
{column | expression | ROW | REPORT}
and where action has the following syntax:
[SKI[P] n | [SKI[P]] PAGE] [NODUP[LICATES] | DUP[LICATES]]
The SKIP option is not supported in iSQL*Plus
b、命令特性描述
break 命令主要用于过滤重复列,正如单词所表达的意思及中断,也就是说中断显示重复的列。
当下一行记录的上指定的列与上一行相同,不显示该列,否则显示该列。
当使用break时,通常建议sql语句使用Order by 子句。可以基于order by子句使用多个列,同样break 也可以使用多个列。
report_element表明可以基于列,表达式,行,以及report等多种不同类型来进行中断显示,也就是说break on对哪个进行分组。
action则表示
skip[n],在每个分组的最后,自动跳过n个空行。
skip page, 在每个分组的最后,自动换页。
break on row skip[n],每一行后面跳过n个空行。
nodup 重复的显示空,dup重复的也显示,不加该选项,默认就为nodup
SQL> conn scott/tiger@rhel201;
已连接。
SQL> show pagesize
pagesize
SQL> show linesize
linesize
SQL> select deptno,ename,sal from emp order by deptno; DEPTNO ENAME SAL
---------- ---------- ----------
CLARK
KING
MILLER
JONES
FORD
ADAMS
SMITH
SCOTT
WARD
TURNER
ALLEN
JAMES
BLAKE
MARTIN 已选择14行。 SQL> break on deptno --过滤重复的deptno内容,默认为nudup
SQL> break --查看当前的break设置信息
break on deptno nodup SQL> list
* select deptno,ename,sal from emp order by deptno
SQL> / DEPTNO ENAME SAL
---------- ---------- ----------
CLARK
KING
MILLER
JONES
FORD
ADAMS
SMITH
SCOTT
WARD
TURNER
ALLEN
JAMES
BLAKE
MARTIN 已选择14行。 SQL> break on deptno skip 1 --在每个分组后自动跳过1个空行
SQL> list
1* select deptno,ename,sal from emp order by deptno
SQL> / DEPTNO ENAME SAL
---------- ---------- ----------
CLARK
KING
MILLER JONES
FORD
ADAMS
SMITH
SCOTT WARD
TURNER
ALLEN
JAMES
BLAKE
MARTIN 已选择14行。 SQL> break on row skip 1 --基于row进行分组,且每行之后也跳过一行
SQL> / DEPTNO ENAME SAL
---------- ---------- ----------
CLARK KING MILLER JONES FORD ADAMS SMITH SCOTT WARD TURNER ALLEN JAMES BLAKE MARTIN 已选择14行。 SQL> SQL> show pagesize
pagesize
SQL> break on deptno skip page --基于页面进行跳页
SQL> / DEPTNO ENAME SAL
---------- ---------- ----------
CLARK
KING
MILLER DEPTNO ENAME SAL
---------- ---------- ----------
JONES
FORD
ADAMS
SMITH
SCOTT DEPTNO ENAME SAL
---------- ---------- ----------
WARD
TURNER
ALLEN
JAMES
BLAKE
MARTIN 已选择14行。 SQL>
SQL> break on deptno on job skip 1 --基于多列break
SQL> select deptno,ename,job,sal from emp order by deptno DEPTNO ENAME JOB SAL
---------- ---------- --------- ----------
CLARK MANAGER KING PRESIDENT MILLER CLERK JONES MANAGER DEPTNO ENAME JOB SAL
---------- ---------- --------- ---------- FORD ANALYST ADAMS CLERK
SMITH SCOTT ANALYST DEPTNO ENAME JOB SAL
---------- ---------- --------- ---------- WARD SALESMAN
TURNER
ALLEN JAMES CLERK DEPTNO ENAME JOB SAL
---------- ---------- --------- ----------
BLAKE MANAGER MARTIN SALESMAN
二、compute用法
help compute
COMPUTE
-------
In combination with the BREAK command, calculates and prints summary lines using various standard computations. Also lists
all COMPUTE definitions.
COMP[UTE] [function [LAB[EL] text] ...
OF {expr|column|alias} ...
ON {expr|column|alias|REPORT|ROW} ...]
b、命令特性描述
compute用于分组值计算指定的列上的数值,实际上等同于对分组列执行group by,然后调用聚合函数。
function为常用的聚合函数,如sum,avg,maximum,minimum,std,count等等。
of为指定的计算列,也就是说要计算哪一列。
on为分组条件,基于哪个列,表达式,report,row等进行分组。
compute通常结合break来用,否则相当于没有分组,聚合也就没有任何意义。
SQL> clear break
breaks 已清除
SQL> break on deptno skip
SQL> compute sum of sal on deptno; --基于deptno对sal求和
SQL> select deptno,ename,job,sal from emp order by deptno; DEPTNO ENAME JOB SAL
---------- ---------- --------- ----------
CLARK MANAGER
KING PRESIDENT
MILLER CLERK
********** ----------
sum JONES MANAGER DEPTNO ENAME JOB SAL
---------- ---------- --------- ----------
FORD ANALYST
ADAMS CLERK
SMITH CLERK
SCOTT ANALYST
********** ----------
sum DEPTNO ENAME JOB SAL
---------- ---------- --------- ----------
WARD SALESMAN
TURNER SALESMAN
ALLEN SALESMAN
JAMES CLERK
BLAKE MANAGER
MARTIN SALESMAN
********** ---------- DEPTNO ENAME JOB SAL
---------- ---------- --------- ----------
sum 已选择14行。 SQL>
SQL> show pagesize
pagesize
SQL> break on report skip
SQL> compute sum of sal on report --基于整个report的sal进行求和
SQL> / DEPTNO ENAME JOB SAL
---------- ---------- --------- ----------
CLARK MANAGER
KING PRESIDENT
MILLER CLERK
JONES MANAGER
FORD ANALYST
ADAMS CLERK
SMITH CLERK DEPTNO ENAME JOB SAL
---------- ---------- --------- ----------
SCOTT ANALYST
WARD SALESMAN
TURNER SALESMAN
ALLEN SALESMAN
JAMES CLERK
BLAKE MANAGER
MARTIN SALESMAN DEPTNO ENAME JOB SAL
---------- ---------- --------- ----------
sum 已选择14行。 SQL> compute sum avg of sal on report ------对整个report求和以及求平均
SQL> / DEPTNO ENAME JOB SAL
---------- ---------- --------- ----------
CLARK MANAGER
KING PRESIDENT
MILLER CLERK
JONES MANAGER
FORD ANALYST
ADAMS CLERK
SMITH CLERK DEPTNO ENAME JOB SAL
---------- ---------- --------- ----------
SCOTT ANALYST
WARD SALESMAN
TURNER SALESMAN
ALLEN SALESMAN
JAMES CLERK
BLAKE MANAGER
MARTIN SALESMAN DEPTNO ENAME JOB SAL
---------- ---------- --------- ----------
----------
avg 2073.21429
sum 已选择14行。 SQL> SQL> compute sum avg of sal on deptno --对deptno分组进行求和,未平均值
SQL> clear break
breaks 已清除
SQL> break on deptno skip
SQL> list
* select deptno,ename,job,sal from emp order by deptno
SQL> / DEPTNO ENAME JOB SAL
---------- ---------- --------- ----------
CLARK MANAGER
KING PRESIDENT
MILLER CLERK
********** ----------
avg 2916.66667
sum DEPTNO ENAME JOB SAL
---------- ---------- --------- ----------
JONES MANAGER
FORD ANALYST
ADAMS CLERK
SMITH CLERK
SCOTT ANALYST
********** ----------
avg DEPTNO ENAME JOB SAL
---------- ---------- --------- ----------
sum WARD SALESMAN
TURNER SALESMAN
ALLEN SALESMAN
JAMES CLERK
BLAKE MANAGER DEPTNO ENAME JOB SAL
---------- ---------- --------- ----------
MARTIN SALESMAN
********** ----------
avg 1566.66667
sum 已选择14行。 SQL> SQL> break on deptno skip
SQL> compute sum of sal comm on deptno --对sal及comm基于分组deptno同时求和
SQL> select deptno,ename,sal,job,comm from emp order by deptno DEPTNO ENAME SAL JOB COMM
---------- ---------- ---------- --------- ----------
CLARK MANAGER
KING PRESIDENT
MILLER CLERK
********** ---------- ----------
sum JONES MANAGER DEPTNO ENAME SAL JOB COMM
---------- ---------- ---------- --------- ----------
FORD ANALYST
ADAMS CLERK
SMITH CLERK
SCOTT ANALYST
********** ---------- ----------
sum DEPTNO ENAME SAL JOB COMM
---------- ---------- ---------- --------- ----------
WARD SALESMAN
TURNER SALESMAN
ALLEN SALESMAN
JAMES CLERK
BLAKE MANAGER
MARTIN SALESMAN
********** ---------- ---------- DEPTNO ENAME SAL JOB COMM
---------- ---------- ---------- --------- ----------
sum 已选择14行。 SQL> SQL> compute sum avg of sal comm on deptno --基于dpetno,对sal和comm求和,求平均值
SQL> / DEPTNO ENAME SAL JOB COMM
---------- ---------- ---------- --------- ----------
CLARK MANAGER
KING PRESIDENT
MILLER CLERK
********** ---------- ----------
avg 2916.66667
sum DEPTNO ENAME SAL JOB COMM
---------- ---------- ---------- --------- ----------
JONES MANAGER
FORD ANALYST
ADAMS CLERK
SMITH CLERK
SCOTT ANALYST
********** ---------- ----------
avg DEPTNO ENAME SAL JOB COMM
---------- ---------- ---------- --------- ----------
sum WARD SALESMAN
TURNER SALESMAN
ALLEN SALESMAN
JAMES CLERK
BLAKE MANAGER DEPTNO ENAME SAL JOB COMM
---------- ---------- ---------- --------- ----------
MARTIN SALESMAN
********** ---------- ----------
avg 1566.66667
sum 已选择14行。 SQL> SQL> compute avg of sal on deptno --对sal列基于分组deptno求平均值
SQL> compute sum of comm on deptno --对comm列基于分组deptno求和
SQL> list
* select deptno,ename,sal,job,comm from emp order by deptno
SQL> / DEPTNO ENAME SAL JOB COMM
---------- ---------- ---------- --------- ----------
CLARK MANAGER
KING PRESIDENT
MILLER CLERK
********** ---------- ----------
avg 2916.66667
sum DEPTNO ENAME SAL JOB COMM
---------- ---------- ---------- --------- ----------
JONES MANAGER
FORD ANALYST
ADAMS CLERK
SMITH CLERK
SCOTT ANALYST
********** ---------- ----------
avg DEPTNO ENAME SAL JOB COMM
---------- ---------- ---------- --------- ----------
sum WARD SALESMAN
TURNER SALESMAN
ALLEN SALESMAN
JAMES CLERK
BLAKE MANAGER DEPTNO ENAME SAL JOB COMM
---------- ---------- ---------- --------- ----------
MARTIN SALESMAN
********** ---------- ----------
avg 1566.66667
sum 已选择14行。 SQL>
SQL*Plus break与compute的简单用法的更多相关文章
- SQL Server中row_number函数的简单用法
一.SQL Server Row_number函数简介 ROW_NUMBER()是一个Window函数,它为结果集的分区中的每一行分配一个连续的整数. 行号以每个分区中第一行的行号开头. 以下是R ...
- SQL Server 中 with tmp 临时表的用法
SQL Server 中 with tmp 临时表的用法 ----------with临时表用法,有时候采用临时表比采用in的效率更高,避免了全表扫描. 实例中实现了查询普通题.大题.子题目的sql ...
- JS的简单用法
JS的简单用法 参考:http://www.w3school.com.cn/js/js_switch.asp JavaScript 是网络的脚本语言 JavaScript 是可插入 HTML 页面的编 ...
- slf4j的简单用法以及与log4j的区别
之前在项目中用的日志记录器都是log4j的日志记录器,可是到了新公司发现都是slf4j,于是想着研究一下slf4j的用法. 注意:每次引入Logger的时候注意引入的jar包,因为有Logger的包太 ...
- python制作简单excel统计报表2之操作excel的模块openpyxl简单用法
python制作简单excel统计报表2之操作excel的模块openpyxl简单用法 # coding=utf-8 from openpyxl import Workbook, load_workb ...
- Python网络编程之TCP套接字简单用法示例
Python网络编程之TCP套接字简单用法示例 本文实例讲述了Python网络编程之TCP套接字简单用法.分享给大家供大家参考,具体如下: 上学期学的计算机网络,因为之前还未学习python,而jav ...
- MyBatis从入门到精通(第4章):MyBatis动态SQL【foreach、bind、OGNL用法】
(第4章):MyBatis动态SQL[foreach.bind.OGNL用法] 4.4 foreach 用法 SQL 语句中有时会使用 IN 关键字,例如 id in (1,2,3).可以使用 ${i ...
- CATransition(os开发之画面切换) 的简单用法
CATransition 的简单用法 //引进CATransition 时要添加包“QuartzCore.framework”,然后引进“#import <QuartzCore/QuartzCo ...
- jquery.validate.js 表单验证简单用法
引入jquery.validate.js插件以及Jquery,在最后加上这个插件的方法名来引用.$('form').validate(); <!DOCTYPE html PUBLIC " ...
随机推荐
- js控制html5 audio的暂停、播放、停止
<!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <meta name ...
- jquery模拟checkbox效果,以及background-size在jquery中的使用。
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http ...
- iOS开发~interface Builder(简称 IB) 界面构建器
1.interface Builder 设置界面 1.1 是什么? 一个可视化的界面编辑工具软件,在xcode4之后整合到了xcode中 1.2 作用? 通过可视化的界面设置,能够少写或不写代码而完成 ...
- OpenCV——IplImage
IplImage结构: typedef struct _IplImage { int nSize; /* IplImage大小 */ int ID; /* 版本 (=0)*/ int nChannel ...
- [转载]Linux 性能监控、测试、优化工具
Linux 平台上的性能工具有很多,眼花缭乱,长期的摸索和经验发现最好用的还是那些久经考验的.简单的小工具.系统性能专家 Brendan D. Gregg 在最近的 LinuxCon NA 2014 ...
- YUI Array 之each| forEach(遍历)
1. yui-each原码: 遍历YArray.each = YArray.forEach = Lang._isNative(Native.forEach) ? function (array, fn ...
- [Head First Python]2. BIF(内置函数)
1- range() >>> for each in range(2): print(each) ... 0 1
- windows对象的属性和方法
window对象是所有客户端javascript特性和API的主要接入点.它表示web浏览器的一个窗口或窗体,并且可以用标志符window来引用它. 一. windows对象的属性 1. locati ...
- 使用TypeScript实现简单的HTML5贪吃蛇游戏
TypeScript是一种由微软开发的自由和开源的编程语言.它是JavaScript的一个超集,而且本质上向这个语言添加了可选的静态类型和基于类的面向对象编程.安德斯·海尔斯伯格,C#的首席架构师,已 ...
- [PowerShell] Backup Folder and Files Across Network
## This Script is used to backup folder/files and delete the old backup files. ## Author: Stefanie # ...