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;