1. Tampilkan FIRST_NAME, SALARY dan JOB_ID kalau ketemu JOB_ID yang mengandung
kata MAN, maka JOB_ID tersebut dapat BONUS 30% dari SALARY. Data ditampilkan
menurun berdasarkan SALARY. Kalau benar maka akan muncul tampilannya seperti pada
gambar dibawah ini :
JAWAB :
1|P a g e
JAWAB :
- SELECT FIRST_NAME ,SALARY , JOB_ID , IF(RIGHT(job_id,3) = 'SA-REP',
(CASE SALARY
WHEN 15000 THEN ‘MANTAP JIWA’
WHEN 10000 THEN ‘SEMANGAT’
WHEN 5000 THEN ‘BERJUANG OM’
ELSE ‘SABAR YA’
END) BONUS FROM karyawan; Output
3. Tampilkan FIRST_NAME, SALARY dan MASA KERJA. MASA KERJA dihitung dari
perbandingan SYSDATE dengan kolom HIRE_DATE menghasilkan jumlah tahun. Untuk
para pegawai akan mendapatkan B O N U S, sesuai dengan MASA KERJA, perhitungan
BONUS (data ditampilkan menaik berdasarkan SALARY) sebagai berikut :
a. MASA KERJA lebih dari 20 tahun dapat bonus 20%
b. MASA KERJA lebih dari 15 tahun dapat bonus 15%
c. MASA KERJA lebih dari 10 tahun dapat bonus 10%
d. MASA KERJA lebih dari 05 tahun dapat bonus 05%
e. MASA KERJA kurang dari 05 tahun tidak dapat bonus
Seperti pada gambar dibawah ini :
2|P a g e
Jawab :
- SELECT FIRST_NAME ,SALARY , HIRE_DATE, round((sysdate –
hire_date)/365,1)||’tahun’ as “masa kerja”
4. Sama dengan soal nomor 3, tapi untuk SALARY dan BONUS, symbol mata uangnya
diganti dengan symbol rupiah, SALARY dan B O N U S ditulis menggunakan FORMAT
CHARACTER . Seperti pada gambar dibawah ini :
3|P a g e
Jawab :
- ALTER SESSION SET NLS_CURRENCY = ‘Rp ‘ ;
- SELECT FIRST_NAME ,ename_to_char (sal , ‘L999,999.99) “ SALARY (Rp)” , HIRE_DATE,
round((sysdate – hire_date)/365,1)||’tahun’ as “masa kerja”
5. Sama dengan soal nomor 4, tapi nama kolomnya diganti dengan nama alias,
FIRST_NAME diganti dengan N A M A, SALARY diganti dengan G A J I. Lalu pada kolom
MASA KERJA, data yang ditampilkan ditambahkan kata TAHUN, Seperti pada gambar
dibawah ini :
Jawab :
- ALTER SESSION SET NLS_CURRENCY = ‘Rp ‘ ;
- SELECT FIRST_NAME AS NAMA ,SALARY to_char (sal , ‘L999,999.99) “GAJI” , HIRE_DATE,
CONCAT(round((sysdate – hire_date)/365,1), 'Tahun) AS “masa kerja”
(CASE masa kerja
WHEN >20 THEN SALARY*0,2
WHEN >15 THEN SALARY*0,15
WHEN >10 THEN SALARY*1
WHEN >5 THEN SALARY*0,05
ELSE SALARY
END) BONUS FROM karyawan; Output
4|P a g e
6. Sama dengan soal nomor 5, tapi jarak antar kolom menjadi lebih rapi, Seperti pada
gambar dibawah ini :
JAWAB :
5|P a g e
7. Sama dengan soal nomor 6, untuk G A J I dan B O N U S dikonversi ke rupiah, nilai
konversi 1 DOLLAR SAMA SETARA DENGAN Rp. 15.000,-, Seperti pada gambar dibawah
ini :
JAWAB :
6|P a g e
8. Tampilkan FIRST_NAME, SALARY, COMMISSION_PCT, dan BONUS. BONUS dihitung
berdasarkan COMMISSION_PCT, kalau COMMISSION_PCT berisi angka selain NULL,
maka dapat bonus 30% dari SALARY ditambah SALARY dikali COMMISSION_PCT. Untuk
nama kolom FIRST_NAME menggunakan nama alias N A M A, SALARY menggunakan
nama alias GAJI, COMMISSION_PCT menggunakan nama alias KOMISI. Data ditampilkan
menaik berdasarkan KOMISI. Untuk lebih jelasnya lihat gambar dibawah ini, Ubah
format GAJI dan BONUS menjadi format character.
JAWAB :
7|P a g e
9. Hitung berapa orang masing-masing manager yang diwakili MANAGER_ID mempunyai
jumlah pegawai dan tampilkan juga SALARY TERBESAR dari masing-masing manager. Dan
ubah nama kolomnya sesuai dengan gambar dibawah ini, Ubah format TERBESAR
menjadi format character :
JAWAB :
- select count(pegawai) as jumlah pegawai, max(salary) from pegawai group by manager id
10. Soal sama dengan nomor 9, diuraikan JUMLAH PEGAWAINYA berdasarkan JOB_ID.
Ganti nama kolomnya dengan nama alias, seperti gambar dibawah ini,
8|P a g e
JAWAB :
- select job_id as jabatan , count(jabatan) as jumlah pegawai, max(salary) from pegawai
group by manager id
11. Menjelang hari raya Idul Fitri, perusahaan akan memberikan THR kepada pegawainya
sebesar dua kali SALARY untuk yang mempunyai COMMISSION_PCT NULL. Sedangkan
untuk yang COMMISSION_PCT BUKAN NULL, maka THR nya ditambah
COMMISSION_PCT dikali SALARY. Tampilkan menggunakan GROUP FUNCTION
berdasarkan JOB_ID dan hitung berapa JUMLAH PEGAWAI, yang memilik JOB_ID yang
sama, serta tampilkan juga COMMISSION_PCT. Untuk masing-masing kolom diberi
nama alias, untuk JOB_ID diberi nama alias JABATAN, untuk COMMISSION_PCT diberi
nama alias KOMISI, untuk SALARY MINIMAL tiap kelompok diberi nama alias GAJI
MIN. Dan ditampilkan terurut berdasarkan menaik berdasarkan KOMISI. Sehingga kalau
dikerjakan dengan baik dan benar sesuai dengan perintah diatas akan muncul tampilan
sebeperti gambar dibawah ini.
9|P a g e
Jawab :
- select job_id as jabatan , commission_pct as komisi , salary as gaji min , count(job_id) as
jumlah pegawai , (case komisi
when is not null then komisi*gaji min
when is null then salary*2
else komisi END) thr from kayawan group by job_id
10 | P a g e