T3 – QUERY LANJUTAN (1)
1. SISKAAMELIA (2103131034)
2. MUHAMMAD SULISTIYO (21031310346)
DOSEN : Rengga Asmara, S.Kom. OCA
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
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
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
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
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 :
PENGGUNAAN SUBQUERY
Subquery digunakan untuk menyelesaikan persoalan dimana
terdapat suatu nilai yang tidak diketahui (unknown values). Berikut
ini diberikan contoh penggunaan subquery.
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 :
PEMBANDINGAN KOLOM
Pembandingan kolom dalam subquery banyak kolom dapat berupa :
 Pembandingan berpasangan (Pairwise Comparison SubQuery)
Pembandingan tidak berpasangan (NonPairwise Comparison
SubQuery)
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
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.
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.
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.
EKSPRESI SCALAR SUBQUERY
Contoh penggunaan scalar subquery dalam ekspresi CASE
Berikut ini contoh penggunaan scalar subquery dalam klausa
ORDER BY :
KORELASI SUBQUERY
Korelasi SubQuery digunakan untuk pemrosesan baris per
baris. Tiap-tiap subquery dijalankan sekali untuk setiap
baris dari outer query. Prosesnya sebagai berikut :
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.
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
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 :
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.
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.
PENGGUNAAN OPERATAOR EXIST
DAN NOT EXIST
Berikut penggunaan operator EXISTS untuk mencari pegawai
yang memiliki sedikitnya satu orang bawahan.
PENGGUNAAN OPERATAOR EXIST
DAN NOT EXIST
Berikut contoh penggunaan operator NOT EXIST untuk
menampilkan semua departemen yang tidak mempunyai
pegawai.
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 :
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.
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.
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
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
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
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
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
7. Buat query untuk menampilkan nama pegawai yang gajinya
kurang dari rata-rata gaji pada departemen tempat dia bekerja.
LATIHAN 1/11
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
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
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
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
THANK YOU

T3 – Query Lanjutan [1]

  • 1.
    T3 – QUERYLANJUTAN (1) 1. SISKAAMELIA (2103131034) 2. MUHAMMAD SULISTIYO (21031310346) DOSEN : Rengga Asmara, S.Kom. OCA
  • 2.
    POKOK BAHASAN  Subquerydan 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
  • 3.
    TUJUAN BELAJAR  Setelahmempelajari 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
  • 4.
    Dapat menggunakan scalarsubqueries 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
  • 5.
    TABEL YANG DIGUNAKANPADA PEMBAHASAN Ada 3 buah tabel yang digunakan masing-masing memiliki struktur sebagai berikut : 1. Tabel DEPARTMENTS 2. Tabel EMPLOYEES 3. Tabel JOB_HISTORY
  • 6.
    SUBQUERY? Adalah statement SELECTyang 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 :
  • 7.
    PENGGUNAAN SUBQUERY Subquery digunakanuntuk menyelesaikan persoalan dimana terdapat suatu nilai yang tidak diketahui (unknown values). Berikut ini diberikan contoh penggunaan subquery.
  • 8.
    SUBQUERY BANYAK KOLOM Padasubquery 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 :
  • 9.
    PEMBANDINGAN KOLOM Pembandingan kolomdalam subquery banyak kolom dapat berupa :  Pembandingan berpasangan (Pairwise Comparison SubQuery) Pembandingan tidak berpasangan (NonPairwise Comparison SubQuery)
  • 10.
    PEMBANDINGAN KOLOM  Pembandinganberpasangan (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
  • 11.
    PEMBANDINGAN KOLOM  Pembagiantidak 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.
  • 12.
    PENGGUNAAN QUERY DALAM KLAUSAFROM 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.
  • 13.
    EKSPRESI SCALAR SUBQUERY Ekspresiscalar 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.
  • 14.
    EKSPRESI SCALAR SUBQUERY Contohpenggunaan scalar subquery dalam ekspresi CASE Berikut ini contoh penggunaan scalar subquery dalam klausa ORDER BY :
  • 15.
    KORELASI SUBQUERY Korelasi SubQuerydigunakan untuk pemrosesan baris per baris. Tiap-tiap subquery dijalankan sekali untuk setiap baris dari outer query. Prosesnya sebagai berikut :
  • 16.
    KORELASI SUBQUERY Berikut inicara penulisan dari Korelasi SubQuery : Berikut ini contoh penggunaan korelasi subquery untuk mencari pegawai yang penghasilannya melebihi rata-rata penghasilan pada departemen tempat mereka bekerja.
  • 17.
    KORELASI SUBQUERY Berikut inicontoh 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
  • 18.
    KORELASI SUBQUERY Denormalisasi padatable 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 :
  • 19.
    KORELASI SUBQUERY Korelasi Subqueryjuga 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.
  • 20.
    PENGGUNAAN OPERATAOR EXIST DANNOT 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.
  • 21.
    PENGGUNAAN OPERATAOR EXIST DANNOT EXIST Berikut penggunaan operator EXISTS untuk mencari pegawai yang memiliki sedikitnya satu orang bawahan.
  • 22.
    PENGGUNAAN OPERATAOR EXIST DANNOT EXIST Berikut contoh penggunaan operator NOT EXIST untuk menampilkan semua departemen yang tidak mempunyai pegawai.
  • 23.
    PENGGUNAAN KLAUSA WITH Denganmenggunakan 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 :
  • 24.
    RINGKASAN  Subquery digunakanuntuk 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.
  • 25.
    LATIHAN 1/11 1. Buatquery 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.
  • 26.
    2. Buat queryuntuk 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
  • 27.
    3. Buat queryuntuk 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
  • 28.
    4. Buat queryuntuk 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
  • 29.
    5. Buat queryuntuk 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
  • 30.
    6. Tampilkan semuapegawai 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
  • 31.
    7. Buat queryuntuk menampilkan nama pegawai yang gajinya kurang dari rata-rata gaji pada departemen tempat dia bekerja. LATIHAN 1/11
  • 32.
    8. Buat queryuntuk 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
  • 33.
    9. Buat queryuntuk 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
  • 34.
    10. Buat queryuntuk 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
  • 35.
    11.Buat query untukmenampilkan 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
  • 36.

Editor's Notes

  • #8 Menampilkan nama pegawai yang gajinya lebih dari pegawai dengan nomor pegawai 149. Sebelumnya, gaji dari pegawai dengan nomer pegawai 149 tidak diketahui, untuk itu kita tempatkan sebagai subquery agar nilai yang tidak diketahui tersebut dapat diketahui dan pada ilustrasi gambar diatas nilai gaji dari pegawai 149 adalah 10500.
  • #13 Query diatas menampilkan nama dan gaji dari pegawai yang gajinya lebih besar dari rata-rata gaji pegawai pada departemen tempat dia bekerja.
  • #24 Contoh penggunaan klausa WITH diatas digunakan untuk menampilkan nama departemen dan total gaji untuk tiap departemen yang memiliki total gaji lebih besar dari gaji rata-rata pada sembarang department.