Oracle练习:用表连接实现查询平均工资最高的部门信息

Oracle练习 利用表连接查询平均工资最高的部门信息

当查询结果数据来自于多两张表时,需要使用特定的连接条件将两张表的记录连接在一起,这种语法“表链接”。

在做查询平均工资最高的部门信息这道题的时候,因为工资字段在employees表中,而题目要求查询结果的部门信息在departments表中,所以应该想到利用表连接来解决。

代码如下:

---1.获取各部门的平均工资,并且可以用排序找出平均工资最高的部门
select department_id,avg(salary) avgsalary
from employees
group by department_id
order by avgsalary desc;
---2.添加编号列rownum,并提取最高工资的一行
select department_id,avgsalary,rownum rn 
from (select department_id,avg(salary) avgsalary 
from employees 
group by department_id 
order by avg(salary) desc)
---3.连接两个表后,查询最高工资的部门信息和平均工资
select d.*,avgsalary
from departments d join (select department_id,avgsalary,rownum rn 
from (select department_id,avg(salary) avgsalary from employees group by department_id order by avg(salary) desc)
where rownum=1)t1
on d.department_id = t1.department_id

其中第三部为最终的代码,查询的结果是:

此题的重点在于使用表连接的做法时,虚拟表是可以和普通表做表连接的,甚至两张虚拟表也可以表连接查询结果

你可能感兴趣的:(Oracle练习:用表连接实现查询平均工资最高的部门信息)