【发布时间】:2022-01-23 16:58:58
【问题描述】:
根据每个部门的最高工资从表中选择 id
表格
| Id | dept | salary |
|---|---|---|
| 1 | support | 25000 |
| 2 | support | 20000 |
| 3 | development | 35000 |
| 4 | development | 25000 |
| 5 | development | 30000 |
select Id from table
where salary In (select max(salary) from table group by dept)
如果像这样运行查询,我会得到类似的输出
| Id |
|---|
| 1 |
| 3 |
| 4 |
我使用排名窗口函数和 CTE 来解决这个查询
with rank_message as (select id,dept,
ROW_NUMBER() over (partition by dept order by salary desc) as sal
from table S)
select id,dept from rank_message where sal=1
【问题讨论】:
-
这能回答你的问题吗? Retrieving the last record in each group - MySQL 您可以轻松地调整接受的答案以通过
salary订购而不是id -
您使用的是哪个 MySQL 版本?
标签: mysql sql group-by aggregate-functions greatest-n-per-group