本篇最近工作中常用得oracle查询语句得小结
oracle表复杂查询
对数据分组的总结
1分组函数只能出现在选择列表、having、order by子句种
2 如果在select 语句种同时包含有group by ,having ,order by 那么他们的顺序是group by , having , order by
3 在选择列种如果有列、表达式、和分组函数,那么这些列和表达式必须有一个出现在group by 子句中,否则就会出错
如select deptno,avg(sal),max(sal) from emp group by deptno having avg(sal)<2000;
这里deptno就一定要出现在 group by 中
合并查询
有时在实际应用中,为了合并多个select语句的结果,可以使用集合操作符号 union , union all,intersect , minus
1)union 该操作符用于取得两个结果集的并集。当使用该操作符时,会自动去掉结果集中重复行。
select ename,sal,job from emp where sal>2500
union
select ename,sal,job from emp where job=‘MANAGER‘;
2)union all 该操作赋与union相似,但是它不会取消重复行,而且不会排序。
select ename,sal,job from emp where sal>2500
union all
select ename,sal,job from emp where job=‘manager‘;
3)intersect 使用该操作符用于取得两个结果集的交集。
select ename,sal,job from emp where sal>2500
intersect
select ename,sal,job from emp where job=‘manager‘;
4) minus 使用该操作符用于取得两个结果集的差集,它只会显示存在第一个集合中,而不存在第二个集合中的数据。
select ename,sal,job from emp where sal>2500
minus
select ename,sal,job from emp where job=‘manager‘;