t3 – query lanjutan [1]

36
T3 – QUERY LANJUTAN (1) 1. SISKA AMELIA (2103131034) 2. MUHAMMAD SULISTIYO (21031310346) DOSEN : Rengga Asmara, S.Kom. OC

Upload: siska-amelia

Post on 11-Apr-2017

269 views

Category:

Engineering


1 download

TRANSCRIPT

Page 1: T3 – Query Lanjutan [1]

T3 – QUERY LANJUTAN (1) 1. SISKA AMELIA (2103131034)

2. MUHAMMAD SULISTIYO (21031310346)

DOSEN : Rengga Asmara, S.Kom. OCA

Page 2: T3 – Query Lanjutan [1]

POKOK BAHASAN

Subquery dan penggunaannya Subquery dengan banyak kolom Pairwise Comparison SubQuery NonPairwise Comparison SubQuery Penggunaan Query dalam Klausa FROM Ekspresi Scalar Korelasi SubQuery dan penggunaannya Penggunaan Query dengan Klausa WITH

Page 3: T3 – Query Lanjutan [1]

TUJUAN BELAJAR Setelah mempelajari materi dalam bab ini, mahasiswa

diharapkan : Dapat menulis subquery dengan banyak kolom Dapat menggambarkan dan menjelaskan karakteristik dari

subqueries pada saat didapatkan nilai NULL Dapat menulis subquery dalam klausa FROM

Page 4: T3 – Query Lanjutan [1]

Dapat menggunakan scalar subqueries dalam SQL Dapat menggambarkan tipe dari persoalan yang dapat dipecahkan dengan

menggunakan sub query yang berkorelasi. Dapat menulis subquery yang berkorelasi. Melakukan Update dan Delete baris dengan menggunakan subqueries yang

berkorelasi. Dapat menggunakan operator EXISTS dan NOT EXISTS Dapat menggunakan klausa WITH

TUJUAN BELAJAR

Page 5: T3 – Query Lanjutan [1]

TABEL YANG DIGUNAKAN PADA PEMBAHASAN

Ada 3 buah tabel yang digunakan masing-masing memiliki struktur sebagai berikut :1. Tabel DEPARTMENTS 2. Tabel EMPLOYEES 3. Tabel JOB_HISTORY

Page 6: T3 – Query Lanjutan [1]

SUBQUERY?Adalah statement SELECT yang dilampirkan sebagai klausa dalam SQL Statement yang lain.

Pada gambar diatas, subquery (inner query) dijalankan sekali sebelum main query. Kemudian hasil dari subquery digunakan oleh main query (outer query). Berikut posisi penulisan subquery dalam SQL command :

Page 7: T3 – Query Lanjutan [1]

PENGGUNAAN SUBQUERY

Subquery digunakan untuk menyelesaikan persoalan dimana terdapat suatu nilai yang tidak diketahui (unknown values). Berikut ini diberikan contoh penggunaan subquery.

Page 8: T3 – Query Lanjutan [1]

SUBQUERY BANYAK KOLOM

Pada subquery dengan banyak kolom, tiap baris dari main query dibandingkan dengan nilai dari subquery multiple-row dan multiple-column. Berikut ini contoh pembandingan dengan banyak kolom dan baris :

Page 9: T3 – Query Lanjutan [1]

PEMBANDINGAN KOLOM

Pembandingan kolom dalam subquery banyak kolom dapat berupa : Pembandingan berpasangan (Pairwise Comparison SubQuery)Pembandingan tidak berpasangan (NonPairwise Comparison

SubQuery)

Page 10: T3 – Query Lanjutan [1]

PEMBANDINGAN KOLOM

Pembandingan berpasangan (Pairwise Comparasion SubQuery)Berikut contoh pembandingan berpasangan untuk menampilkan detail dari data pegawai yang dimanajeri oleh manajer dan department yang sama dengan yang dimiliki oleh nomer pegawai 178

Page 11: T3 – Query Lanjutan [1]

PEMBANDINGAN KOLOM

Pembagian tidak berpasangan (NonPairWise Comparison SubQuery)

Berikut contoh pembandingan tidak berpasangan untuk menampilkan detail dari data pegawai yang dimanajeri oleh manager yang sama dengan pegawai dengan nomer pegawai 174 atau 141 dan bekerja dalam departement yang sama dengan pegawai yang memiliki nomer pegawai 174 atau 141.

Page 12: T3 – Query Lanjutan [1]

PENGGUNAAN QUERY DALAM KLAUSA FROM

Query bisa diletakkan di dalam klausa FROM untuk membentuk tabel temporer. Query semacam ini dikenal juga dengan istilah inline view, karena tidak membentuk object database. Berikut ini contoh penggunaan Query dalam klausa FROM.

Page 13: T3 – Query Lanjutan [1]

EKSPRESI SCALAR SUBQUERY

Ekspresi scalar subquery adalah subquery yang mengembalikan hanya satu nilai kolom dari satu baris. Scalar subquery pada standart SQL-92 hanya terbatas pada :

SELECT Statement (klausa FROM dan WHERE saja) Daftar VALUE dari statement INSERT

Pada standart SQL-99, scalar subqueries dapat diguanakan dalam : Kondisi dan ekspresi sebagai bagian dari perintah DECODE dan

CASE. Semua klausa dari SELECT Statement kecuali GROUP BY.

Page 14: T3 – Query Lanjutan [1]

EKSPRESI SCALAR SUBQUERY

Contoh penggunaan scalar subquery dalam ekspresi CASE

Berikut ini contoh penggunaan scalar subquery dalam klausa ORDER BY :

Page 15: T3 – Query Lanjutan [1]

KORELASI SUBQUERY

Korelasi SubQuery digunakan untuk pemrosesan baris per baris. Tiap-tiap subquery dijalankan sekali untuk setiap baris dari outer query. Prosesnya sebagai berikut :

Page 16: T3 – Query Lanjutan [1]

KORELASI SUBQUERY

Berikut ini cara penulisan dari Korelasi SubQuery :

Berikut ini contoh penggunaan korelasi subquery untuk mencari pegawai yang penghasilannya melebihi rata-rata penghasilan pada departemen tempat mereka bekerja.

Page 17: T3 – Query Lanjutan [1]

KORELASI SUBQUERY

Berikut ini contoh yang lain dari korelasi subquery yaitu untuk menampilkan pegawai yang pernah berganti job sedikitnya dua kali.

Korelasi Subquery juga dapat digunakan untuk meng-update baris pada satu table berdasarkan pada baris dari table yang lain, korelasi seperti itu dinamakan dengan Korelasi Update. Berikut cara penulisan Korelasi Update

Page 18: T3 – Query Lanjutan [1]

KORELASI SUBQUERY

Denormalisasi pada table EMPLOYEES dengan menambahkan satu kolom pada tabel EMPLOYEES untuk menyimpan nama departemen.

Kemudian isi dari kolom nama departemen didapatkan dari tabel DEPARTMENTS dengan menggunakan Korelasi Update :

Page 19: T3 – Query Lanjutan [1]

KORELASI SUBQUERY

Korelasi Subquery juga dapat digunakan untuk menghapus baris pada satu table berdasarkan pada baris dari table yang lain, korelasi seperti itu dinamakan dengan Korelasi Delete. Berikut cara penulisan Korelasi Delete :

Berikut contoh penggunaan Korelasi DELETE untuk menghapus baris-baris dari tabel EMPLOYEES yang juga terdapat pada tabel EMP_HISTORY.

Page 20: T3 – Query Lanjutan [1]

PENGGUNAAN OPERATAOR EXIST DAN NOT EXIST

Operator EXISTS dan NOT EXIST digunakan untuk menguji keberadaan dari baris dalam himpunan hasil dari subquery. Jika ditemukan, maka pencarian tidak dilanjutkan dalam inner

query dan kondisi ditandai TRUE. Jika tidak ditemukan, maka kondisi ditandai FALSE dan kondisi

pencarian dilanjutkan dalam inner query.

Page 21: T3 – Query Lanjutan [1]

PENGGUNAAN OPERATAOR EXIST DAN NOT EXIST

Berikut penggunaan operator EXISTS untuk mencari pegawai yang memiliki sedikitnya satu orang bawahan.

Page 22: T3 – Query Lanjutan [1]

PENGGUNAAN OPERATAOR EXIST DAN NOT EXIST

Berikut contoh penggunaan operator NOT EXIST untuk menampilkan semua departemen yang tidak mempunyai pegawai.

Page 23: T3 – Query Lanjutan [1]

PENGGUNAAN KLAUSA WITH

Dengan menggunakan klausa WITH, kita dapat menggunakan blok query yang sama dalam statement SELECT pada saat terjadi lebih dari sekali dalam complex query. Klausa WITH mendapatkan hasil dari blok query dan menyimpannya dalam tablespace temporer kepunyaan user. Klausa WITH dapat meningkatkan performansi. Berikut ini contoh penggunaan klausa WITH :

Page 24: T3 – Query Lanjutan [1]

RINGKASAN Subquery digunakan untuk menyelesaikan persoalan dimana terdapat suatu nilai yang

tidak diketahui (unknown values) Pada subquery dengan banyak kolom, tiap baris dari main query dibandingkan dengan

nilai dari subquery multiple-row dan multiple-column. Pembandingan kolom dalam subquery banyak kolom dapat berupa pembandingan

berpasangan (pairwise comparison) dan tidak berpasangan (nonpairwise comparison). Query bisa diletakkan di dalam klausa FROM untuk membentuk tabel temporer, dan

dikenal juga dengan istilah inline view. Korelasi SubQuery digunakan untuk pemrosesan baris per baris. Klausa WITH dapat menggunakan blok query yang sama dalam statement SELECT

pada saat terjadi lebih dari sekali dalam complex query.

Page 25: T3 – Query Lanjutan [1]

LATIHAN 1/11

1. Buat query untuk menampilkan nama, nomer departemen, dan gaji dari pegawai yang yang memiliki nomer departemen dan gaji yang sama dengan nomer departemen dan gaji dari pegawai yang memiliki komisi.

Page 26: T3 – Query Lanjutan [1]

2. Buat query untuk menampilkan nama pegawai, nama departemen, dan gaji dari pegawai yang memiliki gaji dan komisi yang sama dengan gaji dan komisi dari pegawai yang memiliki location ID 1700.

LATIHAN 2/11

Page 27: T3 – Query Lanjutan [1]

3. Buat query untuk menampilkan nama pegawai, tanggal mulai masuk kerja (hire date), dan gaji untuk semua pegawai yang memiliki gaji dan komisi seperti yang dimiliki oleh pegawai yang bernama Kochhar.

Note: Data Kochhar tidak ditampilkan dalam hasil query.

LATIHAN 1/11

Page 28: T3 – Query Lanjutan [1]

4. Buat query untuk menampilkan detail dari nomer pegawai, nama pegawai dan nomer pegawai yang pegawai yang bertempat tinggal di kota yang nama kotanya diawali dengan huruf T.

LATIHAN 1/11

Page 29: T3 – Query Lanjutan [1]

5. Buat query untuk menampilkan data semua pegawai yang memiliki gaji yang lebih dari rata-rata gaji pada departemen tempat mereka bekerja. Data yang ditampilkan yaitu nama pegawai, gaji, nomer departemen, dan rata-rata gaji pada departemen tempat mereka bekerja. Urutkan berdasarkan rata-rata gaji.

LATIHAN 1/11

Page 30: T3 – Query Lanjutan [1]

6. Tampilkan semua pegawai yang tidak memiliki supervisor Cara pertama gunakan operator NOT EXISTS.

Apakah persoalan dapat dipecahkan dengan menggunakan operator NOT IN? Jika bisa bagaimana caranya, dan jika tidak bisa mengapa ?

LATIHAN 1/11

Page 31: T3 – Query Lanjutan [1]

7. Buat query untuk menampilkan nama pegawai yang gajinya kurang dari rata-rata gaji pada departemen tempat dia bekerja.

LATIHAN 1/11

Page 32: T3 – Query Lanjutan [1]

8. Buat query untuk menampilkan nama dari pegawai yang memiliki satu atau lebih kolega (teman satu departemen) dimana kolega tersebut masuk lebih akhir tapi memiliki gaji lebih tinggi.

LATIHAN 1/11

Page 33: T3 – Query Lanjutan [1]

9. Buat query untuk menampilkan nomer pegawai, nama pegawai dan nama departemen dari semua pegawai yang ada.

Note: Gunakan scalar subquery untuk mendapatkan nama departemen dalam statemen SELECT.

LATIHAN 1/11

Page 34: T3 – Query Lanjutan [1]

10. Buat query untuk menampilkan nama departemen dari tiap departemen yang memiliki total gaji diatas 1/8 dari total gaji keseluruhan pada perusahaan. Gunakan klausa WITH untuk menulis query tersebut. Beri nama SUMMARY

LATIHAN 1/11

Page 35: T3 – Query Lanjutan [1]

11.Buat query untuk menampilkan peagwai yang memiliki gaji yang lebih tinggi dari gaji semua sales managers (JOB_ID = 'SA_MAN'). Urutkan berdasarkan jumlah gaji dari tinggi ke rendah.

LATIHAN 1/11

Page 36: T3 – Query Lanjutan [1]

THANK YOU