Oracle练习 利用表连接查询平均工资最高的部门信息
当查询结果数据来自于多两张表时,需要使用特定的连接条件将两张表的记录连接在一起,这种语法“表链接”。
在做查询平均工资最高的部门信息这道题的时候,因为工资字段在employees表中,而题目要求查询结果的部门信息在departments表中,所以应该想到利用表连接来解决。
代码如下:
---1.获取各部门的平均工资,并且可以用排序找出平均工资最高的部门select department_id,avg(salary) avgsalaryfrom employeesgroup by department_idorder 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.*,avgsalaryfrom 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)t1on d.department_id = t1.department_id
其中第三部为最终的代码,查询的结果是:
此题的重点在于使用表连接的做法时,虚拟表是可以和普通表做表连接的,甚至两张虚拟表也可以表连接查询结果