Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql Oracle11g:编写一个查询,列出每个部门的最高收入者_Sql_Oracle_Oracle11g_Subquery - Fatal编程技术网

Sql Oracle11g:编写一个查询,列出每个部门的最高收入者

Sql Oracle11g:编写一个查询,列出每个部门的最高收入者,sql,oracle,oracle11g,subquery,Sql,Oracle,Oracle11g,Subquery,这是一个我花了几个小时研究的问题,并且尝试了各种不同的方法。它必须使用子查询 写一个查询,列出每个部门收入最高的人。包括每个员工的姓氏、部门id和工资 我已经做了大量的子查询方法,但都不起作用。我要么得到一个错误,要么没有返回行。我假设其中一个部门id为空,但即使使用NVLdepartment\u id,我仍然有问题。我试着把桌子劈开,但运气不好。课本没用,我的老师有点没用,请。。。任何帮助 如果有帮助的话,下面是这些值的快照。 您可以对每个部门内的值进行排序,然后在外部查询中仅提取排名第一的值

这是一个我花了几个小时研究的问题,并且尝试了各种不同的方法。它必须使用子查询

写一个查询,列出每个部门收入最高的人。包括每个员工的姓氏、部门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.感谢尼尔的薪水。如果我的老师不喜欢这门课,或者因为我没有做得太久而想把我拒之门外,我就向学校投诉他的课程。我真的不明白为什么会有这样的问题。。。其他一切,我都没有异议,但在我屈服之前,我和这头野兽搏斗了两个多小时。