oracle表查询语句优化
2016-03-21 10:36
495 查看
在实际应用中经常需要执行复杂的数据统计,经常需要显示多张表的数据。
1)数据分组-max,min,avg,sum,count
?如何显示所有员工中最高工资和最低工资
SQL> select max(sal),min(sal) from emp;
?如何显示所有员工中最高工资的所有者
SQL> select ename,sal from emp where sal=(select max(sal) from emp);
?如何显示所有员工中最高工资的所有者的全部信息
SQL> select * from emp where sal=(select max(sal) from emp);
?如何显示所有员工中最高工资和最低工资的所有者的全部信息
SQL> select * from emp where sal=(select max(sal) from emp) or sal=(select min(sal) from emp);
?显示所有员工的平均工资和工资总和
SQL> select avg(sal),sum(sal) from emp;
?计算共有多少员工
SQL> select count(*) from emp;
?计算共有多少个员工有上级
SQL> select count(mgr) from emp;
拓展要求:
?请显示工资最高的员工的名字,工作岗位
SQL> select ename,job from emp where sal=(select max(sal) from emp);
?请显示工资高于平均工资的员工信息
SQL> select * from emp where sal>(select avg(sal) from emp);
1)group by和having子句
group by用于对查询的结果分组统计
having子句用于限制分组显示结果
?如何显示每个部门的平均工资和最高工资
SQL> select avg(sal),max(sal),deptno from emp group by deptno;
意思就是按部门来进行相关的计算
?显示每个部门的每种岗位的平均工资和最低工资
SQL> select avg(sal),min(sal),deptno,job from emp group by deptno,job order by deptno;
?显示每个部门的每个岗位的平均工资、最低工资、最高工资、岗位的人数
SQL> select avg(sal),min(sal),max(sal),count(sal),deptno,job from emp group by deptno,job order by deptno;
?显示平均工资低于2000的部门号和它的平均工资(使用having)
SQL> select avg(sal),deptno from emp group by deptno having avg(sal)<2000;
having的作用就是做二次筛选
?显示岗位有MANAGER的部门和它的最大工资和最小工资
SQL> select avg(sal),min(sal),max(sal),deptno,job from emp group by deptno,job having job='MANAGER';
?显示平均工资高于2000并且有PRESIDENT岗位的部门号
SQL> select deptno from emp group by deptno,job having avg(sal)>2000 and job='PRESIDENT';
获取【下载地址】
QQ: 313596790 【免费支持更新】
支持三大数据库 mysql oracle sqlsever 更专业、更强悍、适合不同用户群体
【新录针对本系统的视频教程,手把手教开发一个模块,快速掌握本系统】
1)数据分组-max,min,avg,sum,count
?如何显示所有员工中最高工资和最低工资
SQL> select max(sal),min(sal) from emp;
?如何显示所有员工中最高工资的所有者
SQL> select ename,sal from emp where sal=(select max(sal) from emp);
?如何显示所有员工中最高工资的所有者的全部信息
SQL> select * from emp where sal=(select max(sal) from emp);
?如何显示所有员工中最高工资和最低工资的所有者的全部信息
SQL> select * from emp where sal=(select max(sal) from emp) or sal=(select min(sal) from emp);
?显示所有员工的平均工资和工资总和
SQL> select avg(sal),sum(sal) from emp;
?计算共有多少员工
SQL> select count(*) from emp;
?计算共有多少个员工有上级
SQL> select count(mgr) from emp;
拓展要求:
?请显示工资最高的员工的名字,工作岗位
SQL> select ename,job from emp where sal=(select max(sal) from emp);
?请显示工资高于平均工资的员工信息
SQL> select * from emp where sal>(select avg(sal) from emp);
1)group by和having子句
group by用于对查询的结果分组统计
having子句用于限制分组显示结果
?如何显示每个部门的平均工资和最高工资
SQL> select avg(sal),max(sal),deptno from emp group by deptno;
意思就是按部门来进行相关的计算
?显示每个部门的每种岗位的平均工资和最低工资
SQL> select avg(sal),min(sal),deptno,job from emp group by deptno,job order by deptno;
?显示每个部门的每个岗位的平均工资、最低工资、最高工资、岗位的人数
SQL> select avg(sal),min(sal),max(sal),count(sal),deptno,job from emp group by deptno,job order by deptno;
?显示平均工资低于2000的部门号和它的平均工资(使用having)
SQL> select avg(sal),deptno from emp group by deptno having avg(sal)<2000;
having的作用就是做二次筛选
?显示岗位有MANAGER的部门和它的最大工资和最小工资
SQL> select avg(sal),min(sal),max(sal),deptno,job from emp group by deptno,job having job='MANAGER';
?显示平均工资高于2000并且有PRESIDENT岗位的部门号
SQL> select deptno from emp group by deptno,job having avg(sal)>2000 and job='PRESIDENT';
获取【下载地址】
QQ: 313596790 【免费支持更新】
支持三大数据库 mysql oracle sqlsever 更专业、更强悍、适合不同用户群体
【新录针对本系统的视频教程,手把手教开发一个模块,快速掌握本系统】
相关文章推荐
- Oracle 连接池配置
- Oracle 连接池配置
- Mysql,Oracle,Java数据类型对应
- Oracle环境变量NLS_LANG
- oracle的sqlldr的使用总结
- Oracle 10g bigfile表空间简介
- SQL Server,Oracle,DB2索引建立语句的对比
- MySQL,Oracle,SQL Server——选取前10条——语法差异
- Oracle 11g 学习2——SQLPlus命令
- 创建Oracle数据库
- oracle 表空间(数据文件)满了后 修改表空间大小
- Oracle 函数
- oracle user account locked
- Oracle导出导入数据库的方式
- oracle trunc()函数的使用
- Oracle 11g服务器监听配置
- oracle rman 数据备份
- oracle11R2 log_archive_format
- ORACLE之搭建DG(COPY数据文件方式)
- Oracle的闪回操作