2016-04-14 21 views
1

GörevSql Sorgu Yazma Oracle'de

Print Tüm çalışanların sayıları, isim ve maaş. maaş da aşağıdaki kriterlere dayalı kategoriyi yazdırmak olarak: maaş 900 küçükse DÜŞÜK den büyük 1500.

sorgula

select ename ,sal , decode (sign (sal - 900) , -1 , 'Low' , 
1 ,'Medium' ) from emp; 
teşebbüs halinde ORTA maaş 1500 daha az ve YÜKSEK ise Benim kurs öğretmeni bize DECODE işlevini kullanarak bir soru sor.

Q) nasıl kod çözme işlevini

+0

Okul ataması? Tablo tanımlarını, örnek tablo verilerini, beklenen sonucu ve ayrıca mevcut sorgu girişimi göster. – jarlh

+0

DECODE? Bu 'case' için bir durum ... – Dariusz

+0

Ben oracle Örnek Veritabanını kullanıyorum (Emp, dept, salgrade) –

cevap

2

Kullanım CASE WHEN kullanarak bunu başarmak için:

SELECT empno, ename, sal, 
    CASE WHEN sal < 900 THEN 'LOW' 
     WHEN sal < 1500 THEN 'MEDIUM' 
     ELSE 'HIGH' 
    END AS category 
FROM emp 
1

Ben DeCODE işlevini kullanarak bu görevi cevap.

select ename ,sal , decode (sign (round((sal - 900)/600 - 0.5)) , -1 , 'Low' , 
1 ,'High' , 0 , 'Medium' ) as "Salary Status" from emp;