每个部门的最高薪水(也是相同的薪水)

时间:2019-01-23 07:06:53

标签: sql sql-server group-by

如何选择薪水相同的每个部门的最高薪水。

我的查询只是使每个部门的第一行薪水相同。但是我想选择每个部门的所有最高相同薪水。请帮我解决这个问题。

下面是示例表:

PSD Department
----------------------
Yumang's Salary: $500
Paus Salary: $500

QA Department
----------------------
Villanueva: $1000 
Calacar: $1000 

这是我正在尝试的代码:

SELECT MAX(inter_department_votes.number_votes)
FROM employee_salary
GROUP BY dept_id

3 个答案:

答案 0 :(得分:1)

也尝试选择dept_id:

SELECT dept_id, 
       MAX(inter_department_votes.number_votes) 
FROM employee_salary GROUP BY dept_id

答案 1 :(得分:0)

使用RANK()函数:

RANK为领带提供相同的数值(例如1、1、2、4、5)。

SELECT *
FROM (
      SELECT dept_id, 
             PersonName, 
             Salary,
             RANK() OVER(PARTITION dept_id ORDER BY Salary DESC) AS SortBySalary 
      FROM employee_salary
     )
WHERE SortBySalary = 1

此外,请使用MAX()函数查看this answer

答案 2 :(得分:0)

您不清楚我的餐桌。我不明白为什么您要为所有部门创建单独的表。

假设您制作了两个不同的表,一个用于员工,一个用于部门。这将使查询更简单,以实现将来高效的数据库。在这种情况下:

+----------+------------+------+-----+
|EmployeeID|EmployeeName|Salary|DepNo|
+----------+------------+------+-----+
|                                    |
+----------+------------+------+-----+
+-----+-------+
|DepNo|DepName|
+-----+-------+
|             |
+-----+-------+


 SELECT DepName, EmployeeName, salary
 FROM Department d
 INNER JOIN Employee e on e.DepNo = d.DepNo 
 INNER JOIN 
 (
    SELECT DepNo, MAX(salary) sal
    FROM Employee
    GROUP BY DepNo
 ) ss ON e.DepNo = ss.DepNo
 AND e.salary = ss.sal;