-
自连接 简介
查看全部 -
笛卡尔积,多表查询正确集
查看全部 -
sql plus报表功能
查看全部 -
小计、总计报表功能<br/>查看全部
-
group by语句增强
查看全部 -
在分组查询中使用排序,order by 2,
2表示表达式中的字段位置
查看全部 -
尽量使用where来代替having查看全部
-
where与having的区别
查看全部 -
组函数与 group by 语法<br/>查看全部
-
group by子句
查看全部 -
sum(decode(to_char(hiredate,'yyyy'),'1990',1,0))
hiredate在1990的总人数
decode --判断
decode 变量,'对比值',y,n
查看全部 -
select empno,ename,sal,(select avg(sal) from emp where deptno=e.deptno) avgsal from emp e where sal>(select avg(sal) from emp where deptno=e.deptno) select e.empna,e.ename,e.sal,d.avgsal from emp e,select deptno,avg(sal) avgsal from emp group by deptno)d
where e.deptno=d.deptno and e.sal>d.avgsal
查看全部 -
rownum是伪列,oracle默认生成行号 行号需要注意的两个问题 1、行号永远按照默认的顺序生成 2、行号只能使用<,<=;不能使用>,>= select rownum,empno,ename,sal from (select * from emp order by sal desc) where rownum<=3; 将排序后的表作为一个集合放到from()中 生成一个新表 重新再查询rownum 就可以让rownum也实现排序了
查看全部 -
select empno,(select deptno from emp where empno='1') --select后面的子查询只能是返回单行记录
from emp;
where后面的子查询中不能有分组函数
having后面的子查询中可以有分组函数
select后面的子查询得到的结果必须是单条记录
from后面的子查询得到的结果必须是多条记录
查看全部 -
select level,empno,ename,sal,mgr --level 伪列 层级
from emp
connect by prior empno=mgr --prior 上层
start with empno=001//start with mgr is null
order by level/order by 1;
自连接缺陷:多表查询》》笛卡尔集》》》会带来至少平方级别的数据累计(不适合大表)
引出层次查询(实际是是单表查询 没有笛卡尔集)
需要遍历树结构
节点连接条件(上一节点的员工号是下一节点的老板)connect by prior empno=mgr
需要设置开始节点 start with
各有优缺点:自连接直观(但不适合大表) 层次查询性能更好(但是不直观)
查看全部
举报