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

Sql 如果两行的最大值相等,如何返回这两个值?,sql,sqlite,Sql,Sqlite,我需要找到每个部门工资最高的人。我有密码,找到了每个部门工资最高的人。但是,当我查看我的数据时,有另一个人在同一部门拥有相同的最大值。有没有办法返回两个人的姓名 示例表: 部门薪资名称 管理员:1000美元,艾米 行政费900美元 HR$1500卡西 HR$1500丹 我尝试过以下代码: SELECT department, Max(salary), name FROM table GROUP BY department ORDER BY salary desc; 我已经得到管理员的详细资料

我需要找到每个部门工资最高的人。我有密码,找到了每个部门工资最高的人。但是,当我查看我的数据时,有另一个人在同一部门拥有相同的最大值。有没有办法返回两个人的姓名

示例表:

部门薪资名称
管理员:1000美元,艾米
行政费900美元
HR$1500卡西
HR$1500丹
我尝试过以下代码:

SELECT department, Max(salary), name
FROM table
GROUP BY department
ORDER BY salary desc;

我已经得到管理员的详细资料了。但我只能知道凯西的名字。有没有办法让丹的名字也出现在我的输出中?谁能给我举个例子吗?谢谢你

你没有提到你正在使用的数据库管理系统

使用标准SQL,您可以使用窗口函数来实现此目的(所有现代DBMS都支持此功能):

不存在以下情况:

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;
请参阅。
结果:

希望这能有所帮助

SELECT department, salary, name
FROM table t
where salary= (select max(salary) from table where t.department = department)

如果希望每个部门有一行,且该行上有名称列表,则可以使用两级聚合:

select dept, salary, names
from (select dept, salary, group_concat(name) as names,
             row_number() over (partition by dept order by salary desc) as seqnum
      from example
      group by dept, salary
     ) t
where seqnum = 1;

您的查询正在以无效方式使用
分组依据。任何有自尊心的数据库都会拒绝。谢谢你提供的信息。我对SQL很陌生。我使用SQLite
SELECT department, salary, name
FROM table t
where salary= (select max(salary) from table where t.department = department)
select dept, salary, names
from (select dept, salary, group_concat(name) as names,
             row_number() over (partition by dept order by salary desc) as seqnum
      from example
      group by dept, salary
     ) t
where seqnum = 1;