Sql Oracle11g:编写一个查询,列出每个部门的最高收入者
这是一个我花了几个小时研究的问题,并且尝试了各种不同的方法。它必须使用子查询 写一个查询,列出每个部门收入最高的人。包括每个员工的姓氏、部门id和工资 我已经做了大量的子查询方法,但都不起作用。我要么得到一个错误,要么没有返回行。我假设其中一个部门id为空,但即使使用NVLdepartment\u id,我仍然有问题。我试着把桌子劈开,但运气不好。课本没用,我的老师有点没用,请。。。任何帮助 如果有帮助的话,下面是这些值的快照。Sql Oracle11g:编写一个查询,列出每个部门的最高收入者,sql,oracle,oracle11g,subquery,Sql,Oracle,Oracle11g,Subquery,这是一个我花了几个小时研究的问题,并且尝试了各种不同的方法。它必须使用子查询 写一个查询,列出每个部门收入最高的人。包括每个员工的姓氏、部门id和工资 我已经做了大量的子查询方法,但都不起作用。我要么得到一个错误,要么没有返回行。我假设其中一个部门id为空,但即使使用NVLdepartment\u id,我仍然有问题。我试着把桌子劈开,但运气不好。课本没用,我的老师有点没用,请。。。任何帮助 如果有帮助的话,下面是这些值的快照。 您可以对每个部门内的值进行排序,然后在外部查询中仅提取排名第一的值
您可以对每个部门内的值进行排序,然后在外部查询中仅提取排名第一的值
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
分区将共享同一部门的所有员工分组在一起,无论空值如何,他们都应该工作
在对他们进行分组后,order by告诉该组按工资降序排列,并给出一个等级。您可以只运行内部查询来了解它的功能。很遗憾,它必须使用子查询,因为这不是编写查询的最佳方式。我同意,没有子查询也有更好的方法。我一点也不喜欢这门课。我不介意SQL,这只是这门课教得不好的方式。我认为他们得到了甲骨文公司的报酬,甲骨文公司在学校附近的街道上有一座大楼,用以使用他们的学习材料和考试,这些材料和考试在教你需要知道的知识方面不是很有效。有没有办法做到这一点而不显示排名?在第一行-而不是使用[select*from]只需重新定义列名。。。在您的情况下:选择a.姓氏、a.部门id、a.感谢尼尔的薪水。如果我的老师不喜欢这门课,或者因为我没有做得太久而想把我拒之门外,我就向学校投诉他的课程。我真的不明白为什么会有这样的问题。。。其他一切,我都没有异议,但在我屈服之前,我和这头野兽搏斗了两个多小时。