Pages

Powered by Blogger.

Tuesday, January 20, 2015

Latihan Sub Query Basis Data

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

 

Blogger news

Blogroll

About