2011-12-19 19 views
5

Belirli bir rol için maksimum ücreti bulabileceğiniz iki seçim ifadem var. Şimdi, bu seçilmiş ifadelerin en fazla iki dönüşüne sahip olmak istiyorum. Aşağıdaki kodu düşünün :Oracle SQL - İki seçim deyiminden en fazla

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

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

bu iki sayının maksimum istediğiniz sonunda.

Tüm bunları bir sorguda nasıl yaparım?

En fazla iki seçim yapın, sonra bu maksimumları karşılaştırın ve en fazla iki maksimum değeri verin.

cevap

9

aynı tablodan okunan her iki seçer beri, bunu yapabilirsiniz:

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

Sen maksimum maaş ve bunun gibi o maaş olan bir rol buluruz.

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

Daha fazla iş başlığından maksimum yararlanmak istiyorsanız, bu başlık "IN" dizisine ekleyin. Her iş unvanı için bir seçim beyanı yazmanıza gerek yok.

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

Bu, role göre değişen tek bir seçim ifadesi ile çözülebilir.

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