Oracle SQL - 从两个SELECT语句中获取最大值

5
我有两个select语句,它们可以找到特定职务的最高工资。 现在我想要将这两个select语句中返回的最大值再取一个最大值。 考虑以下代码:
SELECT MAX(SALARY) 
  FROM TABLE1 
 WHERE ROLE = 'MANAGER'

SELECT MAX(SALARY) 
  FROM TABLE1 
 WHERE ROLE = 'DEVELOPER'; 

我想要的是这两个数字中的最大值。

如何在一条查询语句中完成所有操作?

先使用两个SELECT语句获取两个最大值,然后比较这两个最大值并返回其中的最大值即可。

4个回答

10

如果你想从更多的职位头衔中获取最大值,只需将该职位头衔添加到 "IN" 数组中即可。无需为每个职位头衔编写一个选择语句。

SELECT MAX(SALARY) FROM TABLE1 WHERE ROLE IN ('MANAGER','DEVELOPER')

9

由于两个选择器都从同一个表中读取,因此您可以这样做:

SELECT MAX(SALARY) FROM TABLE1 WHERE ROLE = 'MANAGER' OR ROLE = 'DEVELOPER'

4
您可以按照以下方式确定最高薪资及其对应的职位角色。
SELECT * FROM
(
   SELECT MAX(SALARY) MAXSALARY, ROLE
     FROM TABLE1
    WHERE ROLE IN ('MANAGER','DEVELOPER')
    GROUP BY ROLE
    ORDER BY MAX(SALARY)
)
WHERE ROWNUM = 1

3

这个问题可以通过只使用一个根据角色变化的select语句来解决。

SELECT MAX(SALARY) FROM TABLE1 WHERE ROLE = 'MANAGER' OR ROLE = 'DEVELOPER'

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接