Oracle 11g:编写一个列出每个部门最高收入者的查询

时间:2015-04-13 00:28:23

标签: sql oracle oracle11g subquery

这是我现在花了几个小时的问题,并尝试了各种不同的方式。 它可以使用子查询

“编写一个列出每个部门最高收入者的查询。包括每个员工的last_name,department_id和薪水。”

我已经完成了大量子查询方法,但没有任何效果。我得到一个错误,或“没有行返回”。我假设因为其中一个department_id为null,但即使使用NVL(department_id),我仍然遇到麻烦。我试着拆开桌子,没有运气。教科书没有帮助,我的导师有点无用,请...任何帮助。

这是值的快照,如果有帮助的话。 https://www.dropbox.com/s/bxtntlzqixdizzp/helpme.png?dl=0

1 个答案:

答案 0 :(得分:0)

您可以对每个部门中的值进行排名 - 然后仅拉出外部查询中的第一个位置。

select a.last_name
,a.department_id
,a.salary
from (
  select last_name
  ,department_id
  ,salary
  ,rank() over (partition by department_id order by salary desc) as rnk
  from tablename
) a
where rnk=1

该分区将所有员工聚集在一起,他们共享同一个部门,无论空值如何都应该工作。

对它们进行分组后 - 订单通过告诉该组按工资降序排序,并给出排名。您可以只运行内部查询来了解它的作用。