LATIHAN SUB QUERY
1. Dapatkan
data pegawai (empno, firstnme, umur) yang umurnya lebih tua dari umur sean
Query:
select empno, firstnme, (year(sysdate)-year(birthdate)) as umur from
employee where year(birthdate) < (select
year(birthdate) from employee
where lower (firstnme)= 'sean');
Penjelasan:
Pada query diatas, perintah select
digunakan untuk menampilkan empno, firstnme, tahun sekarang (year(sysdate))
dikurangi tahun lahir pegawai (year(birthdate)) yang diinisialisasikan sebagai
kolom umur dari tabel employee. Dimana syarat/ kondisinya yaitu tahun lahir
pegawai lebih kecil dari subquery yang menampilkan tahun lahir
(year(birthdate)) dari tabel employee dimana tahun lahir tersebut memiliki
firstnme sean.
Yang artinya jika kedua query
tersebut ditampilkan, akan menghasilkan data pegawai (empno, firstnme, umur)
yang umurnya lebih tua dari umur sean.
2. Tampilkan
nomor karyawan, nama depan, nomor departmen, gaji dari karyawan yang satu departmen
dengan Sean dan memiliki gaji lebih besar dari sean.
Query:
select e.empno, e.firstnme, d.deptno,
e.salary from employee e, department d
where e.workdept=d.deptno and d.deptno ='A00' and e.salary > (select salary from employee where empno= '000120');
Penjelasan:
Pada query diatas, perintah select
digunakan untuk menampilkan empno, firstnme, salary dari tabel employee yang
diinisialisasikan dengan e. Dan menampilkan deptno dari tabel department yang
diinisialisasikan dengan d.
Dimana syarat/kondisinya yaitu
workdept pada tabel employee= deptno pada tabel department dan deptno pada
tabel department = ‘A00’ yang
dimaksudkan ‘A00’ disini yaitu nomor department dari sean (satu department dengan
sean, secara otomatis nomor department sama dengan nomor department punya
sean). Dan salary pada tabel employee lebih besar dari subquery salary dari
tabel employee dimana empno nya = ‘000120’ yang dimaksudkan yaitu nomor pegawai
dari sean yaitu ‘000120’.
Dengan penggabungan query tersebut,
maka akan dihasilkan nomor karyawan, nama depan, nomor departmen, gaji dari
karyawan yang satu departmen dengan Sean dan memiliki gaji lebih besar dari
sean.
3. Tampilkan
data karyawan (nomor karyawan, nama depan, nomor departmen, nama departmen, gaji)
yang memiliki jumlah gaji lebih besar dari gaji terbesar seorang manajer.
Query:
select e.empno, e.firstnme, d.deptno,
d.deptname, e.salary from employee e, department d
where
e.workdept=d.deptno and salary >all (select max(salary) from employee where job = 'MANAGER' group by empno);
Penjelasan:
Pada query diatas, perintah select
digunakan untuk menampilkan empno, firstnme, salary dari tabel employee yang
diinisialisasikan dengan e, dan menampilkan deptno, deptname dari tabel department
yang diinisialisasikan dengan d.
Dimana syarat/kondisinya yaitu
workdept pada tabel employee= deptno pada tabel department dan salary pada
query tersebut >all dari subquery yang menampilkan max(salary) yang artinya
gaji maksimum dari tabel employee dimana gaji terbesar tersebut dimiliki oleh
job seorang ‘MANAGER’ yang dikelompokkan berdasarkan empno.
>all tersebut ekuivalen dengan
maksimum.
Sehingga hasil dari query diatas
yaitu data karyawan (nomor karyawan, nama depan, nomor departmen, nama
departmen, gaji) yang memiliki jumlah gaji lebih besar dari gaji terbesar
seorang manajer.
4. Tampilkan
data karyawan (nomor karyawan, nama depan, job, umur, gaji) dari karyawan yang
memiliki pekerjaan yang sama dengan David dan gajinya lebih besar dari David,
serta umurnya lebih muda darinya.
Query:
select empno, firstnme, job, (year(sysdate)-year(birthdate)) as umur, salary from
employee
where job = 'DESIGNER' AND salary > (select
salary from employee where lower (firstnme)='david')
and year(birthdate)> (select
year(birthdate) from employee where lower (firstnme)='david'
);
Penjelasan:
Pada query diatas, perintah select
digunakan untuk menampilkan empno, firstnme, job, tahun sekarang dikurangi
tahun lahir karyawan (year(sysdate)-year(birthdate)) yang inisialisasikan
sebagai kolom umur dari tabel employee.
Dimana syarat/kondisinya yaitu job
pada tabel employee= ‘DESIGNER’ karena pekerjaan david yaitu designer dan salary
pada query tersebut > dari subquery yang menampilkan salary dari tabel
employee dimana gaji tersebut dimiliki oleh firstnme dengan nama david. Dan
tahun lahir pegawai pada query tersebut > dari subquery yang menampilkan
tahun lahir dari tabel employee dimana tahun lahir tersebut dimiliki oleh
firstnme yang bernama david.
Sehingga hasil dari query diatas
yaitu data karyawan (nomor karyawan, nama depan, job, umur, gaji) dari karyawan
yang memiliki pekerjaan yang sama dengan David dan gajinya lebih besar dari
David, serta umurnya lebih muda darinya.
No comments:
Post a Comment