首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果两行相等时返回最大值,如何返回这两个值?

如果两行相等时返回最大值,如何返回这两个值?
EN

Stack Overflow用户
提问于 2019-08-13 15:17:56
回答 4查看 75关注 0票数 3

我需要找出每个部门中薪水最高的人。我已经得到了代码,并找出了每个部门的最高工资人员。但是,当我查看我的数据时,在同一部门中有另一个人具有相同的最大值。有没有办法把两个人的名字都还回去?

示例表:

代码语言:javascript
复制
Department  Salary  Name
Admin       $1000   Amy  
Admin       $900    Ben 
HR          $1500   Cassy
HR          $1500   Dan 

我已经尝试过以下代码:

代码语言:javascript
复制
SELECT department, Max(salary), name
FROM table
GROUP BY department
ORDER BY salary desc;

我一直在获取管理员的详细信息。但是HR我只能知道Cassy的名字。有没有办法让Dan的名字也出现在我的输出中?谁能给我举个例子?谢谢

EN

回答 4

Stack Overflow用户

发布于 2019-08-13 16:02:52

希望这能有所帮助

代码语言:javascript
复制
SELECT department, salary, name
FROM table t
where salary= (select max(salary) from table where t.department = department)
票数 3
EN

Stack Overflow用户

发布于 2019-08-13 15:21:25

您没有提到您正在使用的DBMS。

对于标准SQL,您可以使用窗口函数(所有现代DBMS都支持):

代码语言:javascript
复制
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;
票数 2
EN

Stack Overflow用户

发布于 2019-08-13 15:31:03

使用NOT EXISTS:

代码语言:javascript
复制
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

结果:

代码语言:javascript
复制
| Department | Salary | Name  |
| ---------- | ------ | ----- |
| HR         | 1500   | Cassy |
| HR         | 1500   | Dan   |
| Admin      | 1000   | Amy   |
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57472892

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档