我需要找出每个部门中薪水最高的人。我已经得到了代码,并找出了每个部门的最高工资人员。但是,当我查看我的数据时,在同一部门中有另一个人具有相同的最大值。有没有办法把两个人的名字都还回去?
示例表:
Department Salary Name
Admin $1000 Amy
Admin $900 Ben
HR $1500 Cassy
HR $1500 Dan 我已经尝试过以下代码:
SELECT department, Max(salary), name
FROM table
GROUP BY department
ORDER BY salary desc;我一直在获取管理员的详细信息。但是HR我只能知道Cassy的名字。有没有办法让Dan的名字也出现在我的输出中?谁能给我举个例子?谢谢
发布于 2019-08-13 16:02:52
希望这能有所帮助
SELECT department, salary, name
FROM table t
where salary= (select max(salary) from table where t.department = department)发布于 2019-08-13 15:21:25
您没有提到您正在使用的DBMS。
对于标准SQL,您可以使用窗口函数(所有现代DBMS都支持):
select department, salary, name
from (
select department, salary, name,
dense_rank() over (partition by department order by salary desc) as rnk
from department
) t
where rnk = 1;发布于 2019-08-13 15:31:03
使用NOT EXISTS:
SELECT department, salary, name
FROM tablename t
WHERE NOT EXISTS (
SELECT 1 FROM tablename
WHERE department = t.department and salary > t.salary
)
ORDER BY salary desc, name;请参阅demo。
结果:
| Department | Salary | Name |
| ---------- | ------ | ----- |
| HR | 1500 | Cassy |
| HR | 1500 | Dan |
| Admin | 1000 | Amy |https://stackoverflow.com/questions/57472892
复制相似问题