select ename,sal from emp where job='SALESMAN';
COMPUTE G LABEL avg OF SAL ON REPORT 在全部结果集后面算平均值
/ 再次执行上次的sql语句
break on DEPTNO skip 2 on JOB skip 1 在BREAK字段结果集后面算合计
COMPUTE SUM OF SAL ON DEPTNO
SELECT DEPTNO,JOB,ENAME,SAL FROM EMP ORDER BY DEPTNO,JOB;
SQL> CLEAR BREAKS; 清除设置的BREAK条件
SQL> CLEAR COMPUTES; 清除设置的COMPUTE条件
六、子查询
1. 查询语句可以嵌套
例如: SELECT …… FROM (SELECT …… FROM表名1, [表名2, ……] WHERE 条件) WHERE 条件2;
2. 何处可用子查询?
当查询条件是不确定的条件时
DML(insert, update,delete)语句里也可用子查询
HING里也可用子查询
3. 两个查询语句的结果可以做集合操作
例如:
并集UNION(去掉重复记录)
并集UNION ALL(不去掉重复记录)
差集MINUS,
交集INTERSECT
4. 子查询的注意事项
先执行括号里面的SQL语句,一层层到外面
内部查询只执行一次
如果里层的结果集返回多个,不能用= > < >= <=等比较符要用IN.
5. 子查询的例子(1)
SQL> select title,avg(salary) from s_emp
group by title Having avg(salary) =
(select min(avg(salary)) from s_emp
group by title);
找到最低平均工资的职位名称和工资
5. 子查询的例子(2)
子查询可以用父查询里的表名
这条SQL语句是对的:
SQL>select cty_name from city where st_code in
(select st_code from state where st_name='TENNESSEE' and
city.cnt_code=state.cnt_code);
说明:父查询调用子查询只执行一次.
6.取出结果集的80 到100的SQL语句
ORACLE处理每个结果集只有一个ROWNUM字段标明它的逻辑位置,
并且只能 用ROWNUM<100, 不能用ROWNUM>80。
以下是经过分析后较好的两种ORACLE取得结果集80到100间的SQL语句( ID是唯一关键字的字段名 ):
语句写法:
SQL>select * from (
( select rownum as numrow, c.* from (
select [field_name,...] from table_name where 条件1 order by 条件2) c)
where numrow > 80 and numrow <= 100 )
order by 条件3;
七、在执行SQL语句时绑定变量
1. 接收和定义变量的SQL*PLUS命令
ACCEPT
DEFINE UNDEFINE
&
2. 绑定变量SQL语句的例子(1)
SQL> select id, last_name, salary from s_emp where dept_id = &department_number;
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/ruanjian/article-25214-7.html
不干涉