!使用逻辑操作符号:
?查询工资高于500或是岗位为MANAGER的雇员,同时还要满足他们的姓名的首字母为大写的J:
select * from emp where (sal>500 or job='MANAGER') and ename like 'J%';
!使用order by语句:
?按照工资的从低到高的顺序显示雇员的信息:
select * from emp order by sal;反之:select * from emp order by sal desc ;默认的是asc
?按照部门号升序而员工的工资降序进行排列:
select * from emp order by deptno , sal desc;
?按照列的别名进行排序:
select ename , (sal+nvl(comm,0))*12 "年薪" from emp order by "年薪";
!!!!!!!!!!!!!oracle表的复杂查询!!!!!!!!!!!!!!!!!!
!子查询
?查询工资最高的人并显示他的姓名:
select ename ,sal from emp where sal=(select max(sal) from emp);
?显示工资高于平均工资的员工的信息:
select * from emp where sal>(select avg(sal) from emp);
!使用group by 和 having 字句
group by用于对查询的结果分组统计,
having字句用于限制分组显示结果。
?如何显示每个部门的平均工资和最高工资
select avg(sal),max(sal),deptno from emp group by deptno;
?如何显示每个部门每种岗位的平均工资和最高工资
select avg(sal),max(sal),deptno,job from emp group by deptno,job;
?显示平均工资低于2000的部门号和它的平均工资
select deptno,avg(sal) from emp group by deptno having(avg(sal)<2000);
++++++++++++对数据分组的总结++++++++++
1:分组函数只能出现在选择列表,having,order by字句中;
2:如果在select 语句中同时包含group by,having,order by那么他们的顺序是 group by, having,order by;
3:在选择列中如果有列,表达式和分组函数那么这些列和表达式必须有一个出现在group by字句中否则会报错。
!!!!!!!!!!!!!多表查询!!!!!!!!!!!
?显示雇员名,雇员工资以及所在部门的名字