1.使用逻辑操作符号 示例: 查询工资高于500或是岗位为MANAGER的雇员,同时还要满足他们的姓名首写字母为大写的J SQL>select * from emp where (sal>500 or job='MANAGER') and ename like'J%';
2.使用order by字句 示例: 如何按照工资 的从低到高的顺序显示雇员的信息 select * from emp order by sal; 如果是从高到低的 select * from emp order by sal desc; 按照部门号升序而雇员对的工资降序排列 select * from emp order by depton,sal desc;
使用列的别名排序 select ename,sal "年薪" from emp order by"年薪" asc; 别名需要使用“号圈中
示例: 如何显示所有员工中最高工资,跟最低工资 select max(sal),min(sal) from emp; 如果要显示姓名活其他信息 select ename,sal from emp where sal=(select max(sal)from emp);
select ename,max(sal) from emp;这个是错误的,如果查询的有一个是分组函数,其他的必须也要是分组函数。
查询平均工资 select avg(sal) from emp;
查询工资低于平均工资的 select * from emp where sal<(select avg(sal) from emp);
4.group by和having子句 group by用于对子查询的结果分组统计 having子句用于限制分组显示结果
如何显示每个部门的平均工资和最高工资 SQL> select avg(sal),max(sal),deptno from emp group by deptno;
显示每个部门的每种岗位的平均工资和最低工资 SQL> select avg(sal),max(sal),deptno,job from emp group by deptno,job;
显示平均工资低于2000的部门号和他的平均工资 SQL> select avg(sal),max(sal),deptno from emp group by deptno havingavg(sal)>2000;
对分组函数的总结: 1。分组函数只能出现在选择列having、order by子句中 2.如果在select语句中同时包含有group by,having,order by 那么他们的顺序是group by,having,orderby 3.在选择列中如果有列、表达式、和分组函数,那么这些列和表达式必须有一个出现在group by字句中,否则会出错 如:select deptno,avg(sal),max(sal)from emp group by deptno having avg(sal)<2000; 这里deptno就一定要出现在group by中。