2011-12-19 2 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 문으로 해결할 수 있습니다.

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