Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.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 如何从每个部门检索员工的最高工资_Sql_Sql Server 2008 - Fatal编程技术网

Sql 如何从每个部门检索员工的最高工资

Sql 如何从每个部门检索员工的最高工资,sql,sql-server-2008,Sql,Sql Server 2008,以表Employee为例: Department number Employee_id Salary 1 123 2000 1 234 3266 1 657 3265 2 546 2050 2

以表Employee为例:

Department number      Employee_id      Salary
   1                       123           2000
   1                       234           3266
   1                       657           3265
   2                       546           2050
   2                       657           3000
   2                       121           6000
   3                       131           6500
   3                       141           5000
   3                       151           1050

现在我想从每个部门检索工资最高的员工id。如何为此编写查询?

能否使用max语句:

Select departament_number,employee_id,salary
from employee
where salary in (select MAX(salary) from employee group by departament_number)
试试这个

SELECT Dept_Num,EmpID,Salary
from Employee
WHERE Salary IN (Select MAX(Salary) from Employee Group By Dept_Num)

处理这些查询的一个好方法是使用
row\u number()


如果您想在有关系时为一个部门获取多行,那么使用
densite\u rank()
rank()
而不是
row\u number()

好吧。。这是在我的采访中被问到的。我不知道尝试的逻辑。在你去那个学校网站之前,请看。这是经典问题的一个变体;请参阅此问题的答案:。像这样的东西会有太多重复的问题。将员工id包含在group by中会为每个员工生成一个结果,而不是为部门生成一个记录。非常感谢!!:)@卡提克。这并非在所有情况下都有效。考虑数据是否具有“1,xxx,151”的值。
select department_number, employee_id, salary
from (select e.*, row_number() over (partition by department order by salary desc) as seqnum
      from employee e
     ) e
where seqnum = 1;