Subquery dibagi menjadi 2 macam, yaitu
- Single Row SubQuery
- Multiple Row Subquey
Multi row subqery merupakan subquery yang mengembalikan nilai lebih dari dua baris.
Berikut adalah contoh-contoh penggunaan Subquery dalam SQL:
-->
1. SUB-Query
1. Berikut contoh query untuk menampilkan daftar golongan yang mempunyai gaji lebih besar dari gaji pada golongan D.
SQL> select golongan,gaji
2 from golongan
3 where gaji > (SELECT gaji from golongan where golongan ='D');
GOLONGAN GAJI
--------------- -------------
A 10000000
B 8000000
C 5000000
2. Berikut query untuk menampilkan daftar golongan yang mempunyai gaji lebih besar dari rata-rata gaji semua golongan.
SQL> select golongan, gaji
2 from golongan
3 where gaji > (select AVG(gaji) from golongan);
GOLONGAN GAJI
--------------- -------------
A 10000000
B 8000000
3. Berikut query untuk menampilkan nila-nilai psikotes yang mempunyai nilai lebih tinggi dari pada nilai rata-rata yang ada.
SQL> select kd_pelamar, nilai_psikotes
2 from psikotes
3 where nilai_psikotes > (select AVG(nilai_psikotes) from psikotes);
KD_PELAMAR NILAI_PSIKOTES
----------- --------------
9001 90
9002 88
4. Query ini sama seperti query no 3 tetapi pada query ini juga menampilkan nama dari calon pelamar, dengan kata lain menggunakan join tabel untuk menampilkan nama calon pelamar.
SQL> select a.kd_pelamar, b.nama_pelamar, a.nilai_psikotes
2 from psikotes a, calon_pegawai b
3 where a.kd_pelamar=b.kd_pelamar
4 and
5 a.nilai_psikotes > (select AVG(nilai_psikotes) from psikotes);
KD_PELAMAR NAMA_PELAMAR NILAI_PSIKOTES
----------- -------------------- --------------
9001 koko ardiasyah 90
9002 bagus kurniawan 88
5. Berikut adalah query untuk menampilkan nama peserta yang mempunyai nilai lebih tinggi dari peserta yang mempunyai kd_pelamar ’9002’(nilainya 88).
SQL> select a.kd_pelamar, b.nama_pelamar, a.nilai_psikotes
2 from psikotes a, calon_pegawai b
3 where a.kd_pelamar=b.kd_pelamar
4 and
5 a.nilai_psikotes > (select nilai_psikotes from psikotes where kd_pelamar='9002');
KD_PELAMAR NAMA_PELAMAR NILAI_PSIKOTES
----------- -------------------- --------------
9001 koko ardiasyah 90
6. Berikut query untuk menampilkan daftat calon pegawai yang mempunyai status sama dengan calon pegawai yang mempunyai kd_pelamar ’9001’( Statusnya Belum Kawin ).
SQL> select kd_pelamar, nama_pelamar
2 from calon_pegawai
3 where status = ( select status from calon_pegawai where kd_pelamar='9001');
KD_PELAMAR NAMA_PELAMAR
---------- --------------------
9001 koko ardiasyah
9004 Tania
9005 Inneke
9006 Niken
9008 Bambang
9010 Septian
6 rows selected
7. Berikut query untuk menampilkan NIK karyawan yang mengikuti pelatihan dengan materi yang sama seperti karyawan yang mempunyai NIK=1013.
SQL> select NIK, Materi
2 from pelatihan
3 where materi = (select materi from pelatihan where nik='1013');
NIK MATERI
------- --------------------
1020 Sales
1014 Sales
1013 Sales
1016 Sales
8. Hampir sama seperti no 7 tetapi pada query ini menampilkan selain NIK 1013.
SQL> select NIK, Materi
2 from pelatihan
3 where materi = (select materi from pelatihan where nik='1013')
4 and NIK <> '1013';
NIK MATERI
------- --------------------
1020 Sales
1014 Sales
1016 Sales
9. Berikut query untuk menampilkan NIK hasil dari pelatihan yang mempunyai nilai lebih besar dari pada nilai terbasar yang dimiliki oleh semua yang mempunyai kode jabatan 2003(nilai terbesar pada jabatan 2003 adalah 80).
SQL> select nik, hasil
2 from pelatihan
3 where hasil > (select Max(hasil) from pelatihan where kd_jabatan='2003');
NIK HASIL
------- -----
1020 85
1017 90
10. Sama seperti nomor 9 tetapi disini juga menampilkan nama karyawannya, dengan kata lain menggunakan join tabel dengan tabel karyawan.
SQL> select a.nik, b.nama_karyawan, a.hasil
2 from pelatihan a, karyawan b
3 where
4 a.nik=b.nik
5 AND
6 a.hasil > (select Max(hasil) from pelatihan where kd_jabatan='2003');
NIK NAMA_KARYAWAN HASIL
------- --------------- -----
1017 Kadir Doyok 90
1020 Dona Dono 85
11. Berikut query untuk menampilkan calon pegawai yang berada satu kota dengan calon pegawai dengan NIK 9010 kecuali NIK 9010 itu sendiri.
SQL> select kd_pelamar, nama_pelamar
2 from calon_pegawai
3 where kota = ( select kota from calon_pegawai where kd_pelamar='9010')
4 and
5 kd_pelamar <> '9010';
KD_PELAMAR NAMA_PELAMAR
---------- --------------------
9005 Inneke
9008 Bambang
Untuk mendownload file dengan format doc, klik disini
----------------------------------------##############------------------------------------------
Dapatkan Tambahan Rupiah Dengan Klik Iklan Pada Sistem PTC, Setiap Anda Klik Iklan, Anda Akan Dibayar..
Silahkan Daftarkan Diri Anda Sebagai REFERRAL SAYA Disini :
0 Response to "Penggunaan SubQuery dalam SQL"
Post a Comment
Silahkan berkomentar di bawah ini, komentar yang tidak sopan, mengandung SARA dan saling menghujat tidak akan diterima :D