2011-12-19 39 views
5

我有两条select语句可以找到特定角色的最高工资。 现在我想拥有这些select语句的两个返回值的最大值。 想想下面的代码:Oracle SQL - 来自两条select语句的最大值

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

SELECT MAX(SALARY) 
    FROM TABLE1 
WHERE ROLE = '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 
10

如果您希望获得更多职位的最高职位,请在“IN”阵列中添加该职位。无需为每个职位编写一个选择语句。

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

这可以通过一个不同的角色来解决。

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