1、表的复杂查询
(1)实际应用中经常需要查询复杂的数据统计,要显示多张表的数据,下面学习较为复杂的select语句。
数据分组——max,min,avg,sum,count
**例1:如何显示所有员工中最高工资和最低工资
select max(sal)form emp
**??如何显示最低工资和该雇员的名字
sql语句执行的顺序:从右向左执行
select语句优化,尽量把结果集写在右面
select ename, sal form emp where sal=(select min(sal) from emp)
**例2:显示所有员工的平均工资和工资总和
select avg(sal) 平均工资,sum(sal) 总工资 from emp
**例3:计算共有多少员工
select count(*) from emp
**例4:显示工资最高的员工的名字、工作岗位
**例5:显示工资高于平均工资的员工信息
(2)group by 和 having语句
group by 用于对查询的结果分组统计
having 字句用于限制分组显示结果(往往和group by结合使用,可以对分组查询结果进行筛选)
**例6:如何显示每个部门的平均工资和最高工资
select avg(sal),max(sal),deptno from emp group by deptno
**例7:如何显示每个部门的每种岗位的平均工资和最低工资
select avg(sal),min(sal) ,deptno,job form emp group by deptno,job order by deptno
**例8:显示平均工资低于2000的部门号和它的平均工资,并按照从低到高排
select avg(sal),deptno from emp group by deptno having avg(sal)<2000 order by avg(sal) asc
**********注:顺序:group by , having , order by
**********注:在选择列种如果有列、表达式、和分组函数,那么这些列和表达式必须有一个出现在group by字句中,否则出错,如例8中deptno在group by中出现