如何选择薪水相同的每个部门的最高薪水。
我的查询只是使每个部门的第一行薪水相同。但是我想选择每个部门的所有最高相同薪水。请帮我解决这个问题。
下面是示例表:
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
答案 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;