【Oracle数据库】表查询(二)

来源:互联网 发布:破解矩阵网上选房 编辑:程序博客网 时间:2024/06/11 13:35

Oracle的复杂查询

本文使用到的表

1.EMP(内容和注释在【Oracle数据库】表查询(一)一文中);

2.DEPT,其中deptno为部门编号,Dname为部门名称,Loc为部门地址;


3.SalGrade,其中Grade为工资等级,Losal和Hisal分别为该等级的工资下线和工资上线。

1.数据分组:常用的数据分组函数 -avg(),min(),max(),conut() 等等

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


那我们如何在结果中显示出获得最高工资和最低工资的人呢(使用到了子查询)


我们再举两个例子:计算所有员工的平均工资和工资总和


统计共有多少个不同的岗位


2.group by 和 having 子句

Group by 用于对查询的结果分组统计

Having字句用于限制分组查询的结果 举几个例子就懂了

显示每个部门的最低工资和最高工资


显示每个部门每个不同岗位的最低工资和最高工资


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


注:分组函数只能出现在选择列表、havingorder by 字句里面。

如果在select语句同时包还有group byhavingorder by,那么他们的顺序是group byhavingorder by


3.多表查询:对两个或以上的表或视图进行的查询

我们可以给表起个别名来方便使用,直接看例子吧,简单明了

显示雇员名、员工工资和所在部门的名称


注意,在多表查询中至少指定(表个数-1)个条件(如上的where。。。),否则会出现笛卡尔集。您可以去掉上图中的where条件感受一下。

查询部门号为10的部门名称,员工名和工资


显示员工的姓名,所在部门的名称和工资级别(注意使用到的between关键字)


将上图的查询结果按工资等级升序排序


4.自连接:同一张表内的连接查询

显示员工的名字,和他上司的名字


0 0