oracle表查询语句优化

来源:互联网 发布:nodejs高级编程 pdf 编辑:程序博客网 时间:2024/06/08 02:03
在实际应用中经常需要执行复杂的数据统计,经常需要显示多张表的数据。 

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   更专业、更强悍、适合不同用户群体
新录针对本系统的视频教程,手把手教开发一个模块,快速掌握本系统

0 0
原创粉丝点击