Oracle基础知识整理:

C站下载链接

1 Oracle 基础知识

3 Oracle 基本使用

4 Oracle 用户管理

6-1 Oracle 表的管理-创建修改表

6-2 Oracle 表的管理-表查询


文章目录

  • 6 Oracle 表的管理
  • 6.5 oracle表的管理 -表查询(重点)
  • 6.5.2 Oracle表复杂查询
  • ·说明
  • ·数据分组-max,min,avg,sum,count
  • ·扩展要求
  • ·group by和having字句
  • ·对数据分组的总结


6 Oracle 表的管理

6.5 oracle表的管理 -表查询(重点)

6.5.2 Oracle表复杂查询

·说明

在实际应用中经常需要执行复杂的数据统计,经常需要显示多张表的数据,现在我们给大家介绍较为复杂的select语句

·数据分组-max,min,avg,sum,count

如何显示所有员工中最高工资和最低工资

select max(sal) "最高工资",min(sal)"最  高工资" from emp;

显示最高工资以及员工名

select ename,sal from emp where sal=  (select max(sal) from emp);

显示所有员工的平均工资和工资总和

select avg(sal) "平均工资",sum(sal)"工资  总和" from emp;

计算共有多少员工

select count(*) from emp;

·扩展要求

请显示工资最高的员工的名字,工作岗位

select ename,sal,job from emp where  sal=(select max(sal) from emp);

请显示工资高于平均工资的员工信息

select * from emp where sal>(select  avg(sal) from emp);

给那些1987年7月19之前入职并且工资小于平均工资的员工工资上浮百分之八十

update emp set sal=sal+sal*0.8 where  sal<(select avg(sal) from emp) and  hiredate<'19-7月-1987';

·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 order by  deptno desc;

显示平均工资低于2000的部门号和它的平均 工资

select avg(sal),deptno from emp group   by deptno having avg(sal)<2000 order   by avg(sal);

·对数据分组的总结

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 ;