Oracle SQL - 两个select语句中的最大值

时间:2011-12-19 01:48:40

标签: sql oracle select max where

我有两个select语句,可以找到特定角色的最高工资。 现在我希望获得这些select语句的两个返回值的最大值。 请考虑以下代码:

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

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

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

如何在一个查询中完成所有这些操作?

有两个选择最大值,然后比较这些最大值并给出两个最大值的最大值?

4 个答案:

答案 0 :(得分:10)

如果您希望获得更多职位的最大分数,请在“IN”数组中添加该职位。无需为每个职位编写一个select语句。

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

答案 1 :(得分:9)

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

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

答案 2 :(得分: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 :(得分:3)

这可以通过一个选择语句来解决,该语句因角色而异。

SELECT MAX(SALARY) FROM TABLE1 WHERE ROLE = 'MANAGER' OR ROLE = 'DEVELOPER'
相关问题