根据每个部门的最高工资从表中选择id
表
Id | 部门 | 工资||
---|---|---|---|
1 | 支持 | 25000||
2 | 支持 | 20000 | |
3 | 开发 | 35000 | |
4 | 开发 | <25000>||
5 | 开发 | 30000 |
我们可以返回dept
列的值,以及每个部门的最高工资:
SELECT m.dept
, MAX(m.salary) AS max_salary
FROM mytable m
GROUP
BY m.dept
我们可以将其转换为内联视图(或"派生表"(,并将其连接到原始表。我们可以获得与行匹配的详细信息行(关于部门和最高工资(
SELECT t.id
-- , t.dept
-- , t.salary
FROM (
-- maximum salary from each dept
SELECT m.dept
, MAX(m.salary) AS max_salary
FROM mytable m
GROUP
BY m.dept
) s
JOIN mytable t
ON t.dept = s.dept
AND t.salary = s.max_salary
ORDER
BY t.id
请注意,如果mytable中有两行(或多行(对于同一部门具有相同的最高工资,则将返回两行(或者全部(匹配的行。
作为示例,考虑一下如果将行(5,'support',35000)
添加到mytable中,查询将返回什么。现在,在"支持"部门有两行人的工资最高。
select Id from table as t1 inner join
(select id, max(salary) from table group by dept) as t2 on t1.id= t2.id