Anda di halaman 1dari 10

TUGAS ORACLE DATABASE FUNDAMENTAL

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 :

- SELECT FIRST_NAME ,max(SALARY) , JOB_ID , IF(RIGHT(job_id,3) = 'MAN',


SALARY*0,3% as “BONUS” FROM karyawan; Output

2. Tampilkan FIRST_NAME, SALARY dan JOB_ID, Berikan keterangan berdasarkan SALARY


dan JOB_ID yang tampil hanya yang bernama SA-REP. Keterangan tersebut adalah
sebagai berikut :
a. Bila SALARY lebih 15.000 keterangannya MANTAP JIWA
b. Bila SALARY lebih 10.000 keterangannya SEMANGAT
c. Bila SALARY lebih 5.000 keterangannya BERJUANG OM
d. Bila bukan itu semua keterangannya SABAR YA
Kalau benar maka akan muncul tampilannya seperti pada gambar dibawah ini :

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”

(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. 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”

(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

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 :

- SET LINESIZE 32000;


- SET PAGESIZE 40000;
- 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

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 :

- SET LINESIZE 32000;


- SET PAGESIZE 40000;
- ALTER SESSION SET NLS_CURRENCY = ‘Rp ‘ ;
- SELECT FIRST_NAME AS NAMA ,SALARY, to_char (sal , ‘$999,999.99) “GAJI ($)”,To_char (sal,
‘L999G999G999D99’)”GAJI (Rp)” , 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

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 :

- SELECT FIRST_NAME AS NAMA ,SALARY AS GAJI , COMMSION_PCT AS KOMISI , SALARY


to_char (sal , ‘$999,999.99) “GAJI” , SALARY*0,3% as “BONUS” , BONUS to_char (sal ,
‘$999,999.00) “BONUS “ FROM KARYAWAN WHERE COMMSION_PCT IS NOT NULL

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

Anda mungkin juga menyukai