这是我现在花了几个小时的问题,并尝试了各种不同的方式。 它可以使用子查询。
“编写一个列出每个部门最高收入者的查询。包括每个员工的last_name,department_id和薪水。”
我已经完成了大量子查询方法,但没有任何效果。我得到一个错误,或“没有行返回”。我假设因为其中一个department_id为null,但即使使用NVL(department_id),我仍然遇到麻烦。我试着拆开桌子,没有运气。教科书没有帮助,我的导师有点无用,请...任何帮助。
这是值的快照,如果有帮助的话。 https://www.dropbox.com/s/bxtntlzqixdizzp/helpme.png?dl=0
答案 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
该分区将所有员工聚集在一起,他们共享同一个部门,无论空值如何都应该工作。
对它们进行分组后 - 订单通过告诉该组按工资降序排序,并给出排名。您可以只运行内部查询来了解它的作用。