You are on page 1of 8

MODUL V QUERY , QUERY KOMPLEKS dan FUNGSI AGREGAT (3 pertem an!

A" Ma#$ d Menjelaskan penggunaan query serta fungsi-fungsi agregat untuk memperoleh data %" T & an Mahasiswa memahami berbagai perintah query. Mahasiswa memahami berbagai fungsi agregat dan penggunaannya. Mahasiswa mampu membuat query untuk memperoleh data. '" Da$ar Te(r) Dalam aplikasi yang menggunakan database tidak akan pernah terlepas dalam perolehan kembali data. Untuk memunculkan data yang dikemas lebih baik agar memudahkan pengguna data untuk mengerti dan memahami data tentunya tidak akan terlepas dari query-query sql yang lebih komplek apalagi data antara table satu dengan table lainnya saling berhubungan. Sangat panjang jika kita menulis subquery dalam satu baris(baris tunggal dan multiple-row subqueris(banyak baris dimana hanya satu kolom saja yang ingin ditampilkan dengan perintah select dan ini digunakan untuk menge!aluasi dari e"pression dalam induk perintah select. #ika kita ingin membandingkan dua atau lebih kolom$ kita harus menulis sebuah gabungan klausa %&'(' menggunakan operator logika. Menggunakan multiple-subqueries$ kita dapat mengkombinasikan duplikat kondisi where ke dalam satu klausa %&'('. Syntak) select kolom, kolom, from table where (kolom, kolom,) IN select kolom, kolom,.. From table Where kondisi);

22

Per*and)n+an K(,(m Multiple-kolom membandingkan ke dalam subquery dan dijadikan campuran perbandingan atau pasangan perbandingan. #ika kita mempertimbangkan contoh *menampilan secara detail dari pekerja yang bekerja di beberapa department dan memiliki beberapa menager seperti +Daniel,-$ kita dapat melihat hasilnbya dari statement berikut. Select first_name, last_name, manager_id, de artment_id from em lo!ees where manager_id IN (select manager_id from em lo!ees where firt_name"#$aniel) %N$ de artment_id IN (select de artment_id From em lo!ees where firt_name"#$aniel#); Pa$an+an per*and)n+an $ *- er. Menampilkan secara detail dari pekerja yang di manage oleh beberapa manager and bekerja di beberapa department sebagai pekerja yang first/name nya adalah *#ohn-. select em lo!ee_id, manager_id, de artment_id from em lo!ees where (manager_id, de artment_id) IN ( select manager_id, de artment_id from em lo!ees where first_name"&'ohn&) %N$ first_name () &'ohn& 0ada contoh diatas adalah contoh tampilan hasil dari query kombinasi nilai dari kolom manager/id dan kolom department/id untuk masung-asing baris pada table employees dengan nilai pada kolom manager/id dan kolom department/id untuk pekertja dengan first/name adalah *#ohn-$ subquery untuk menndapatkan kembali nilai dari manager/id dan department/id untuk employees dengan first/name *#ohn- dieksekusi. 1ilai perbandingan dengan kolom manager/id dan department/id untuk masing-masing baris dalam table employees. #ika kombinasi sesuai$ baris akan ditampikan. Dalam output$ record dari employees dengan first/name *#ohntidak akan ditampilkan.

23

N(nPa$an+an Per*and)n+an S *- er. Menampilkan secara detail dari pekerja yang dimanage beberapa manager pekerja dengan firt/name *#ohn- dan bekerja di beberap department dengan first/name #ohn select em lo!ee_id, manager_id, de artment_id from em lo!ees where manager_id IN (select manager_id from em lo!ees where first_name"&'ohn&) %N$ de artment_id IN (select de artment_id from em lo!ees where first_name"&'ohn&) %N$ first_name()&'ohn&; E#$pre$)/e#$pre$) S0a,ar S *- er. Scalar subquery adalah subquery yang mengembalikan tepat satu nilai kolom dari satu baris. Scalar subquery dapat digunakan di. 2agian kondisi dan e"presi dari D'34D' and 35S' Semua klausa dari S'6'37 kecuali 8(4U0 29

3ontoh scalar subquery dapa 35S' e"pression select em lo!ee_id, last_name,( *%S+ when de artment_id" (select de artment_id from de artments where location_id",-..) /0+N &*anada& +1S+ &2S%& +N$) location from em lo!ees 3ontoh subquery dalam klausa order by select em lo!ee_id, last_name from em lo!ees e order b! ( select de artment_name from de artments d where e.de artment_id"d.de artment_id);

24

K(re,a$) S *- er. :orelasi subquery digunakan untuk proses baris-perbaris.Masng-masing subquery di eksekusi setelah setiap baris setelah query paling luar. 4racle ser!er menampilkan sebuah korelasi query mengacu sebuah kolom dari table yang menunjuk dapa parent statement. :orelasi subquery die!alusi ketika setiap baris diproses oleh statement induk. ;nduk statement dapat berupa select$ update atau delete. Syntak Select kolom,, kolom3, From table, o4ter Where kolom, o erator (select kolom,, kolom3,.. From table3 Where e5 resi"o4ter.e5 resi3); Menampilkan semua pekerja yang mendapatkan lebih dari rata-rata gajidari department tertentu select last_name, salar!, de artment_id from em lo!ees o4ter where salar! ) (select %67(salar!) from em lo!ees where de artment_id"o4ter.de artment_id);

Men++ na#an Operat(r E1)$t$ 4perator '<;S7S mengecek keberadaan dari baris dalam hasil subquery. #ika 1ilai baris dari subquery ditemukan. o 0encarian tidak akan dilanjutkan dalam query terdalam o :ondisi tetap benar #ika 1ilai baris dari subquery tidak ditemukan. o :ondisi akan salah o 0encarian akan diteruskan samapi pada query paling dalam.

25

Menemukan

pekerja

yang

memiliki

laporan

orang

paling

sedikit

memberikan laporan select em lo!ee_id, last_name, 8ob_id, de artment_id from em lo!ees o4ter where +9IS/S ( select &9& from em lo!ees where manager_id"o4ter.em lo!ee_id); K(re,a$) Update Menggunakan korelasi query untuk update baris berdasar pada baris dari table lain Syntak 2 date table, alias Set kolom"(select e5 ression From table3 alias Where alias,.kolom"alias3.kolom); Denormalisasi table 'M0=> dengan menambahkan sebuah kolom untuk memasukan pada department name. *reate table em ,: as select ; from em lo!ees; %lter table em ,: add(de artment_name <archar3(3=)); Select de artment_name from em ,:; 4 date em ,: e set de artment_name" (select de artment_name from de artments d where e.de artment_id"d.de artment_id); Select de artment_name from em ,:; K(re,a$) De,ete Menggunakan korelasi subquery untuk mendelete row berdasarkan pada baris dari table lain Syntak $+1+/+ from table, alias W0+>+ kolom o erator (select e5 ression from table alias3 Where alias,.kolom"alias3.kolom);

26

$+1+/+ from em ,: + where em lo!ee_id"( select em lo!ee_id from em lo!ees em lo!ee_id"+.em lo!ee_id); select ; from em ,:; D" Pra#t)#

where

=. 0raktikkan sintak-sintak yang ada didalam kotak pada modul ini dengan menggunakan tabel employees. 5mati hasilnya ?. Untuk praktik berikut$ buatlah tabel-tabel dengan struktur dibawah ini dan isi datanya masing-masing tabel minimal =@ record. 3abang 1ama3abangA :ota3abang 5sset (ekening 1omor(ekening A 1ama3abang Saldo 0injaman 1omor0injamanA 1ama3abang Saldo 0eminjam 1omor0injaman 1ama1asabah 1ama1asabah 1ama1asabahA #alan1asabah :ota1asabah 0enabung 1ama1asabah 1omor(ekening

6akukan perintah-perintah berikut$ analisa hasil dan sebutkan fungsi perintah tersebut. #ika anda tidak memperoleh apapun dari sintak tersebut$ untuk memudahkan analisa anda$ maka bilangan atau isian pada sintak dapat anda ganti menyesuaikan data yang ada pada tabel-tabel anda. 3ontoh =@@@@@@@@@ diganti menjadi =@@@@@@. a. select Nomor?in8aman from ?in8aman where Nama*abang " @Aant4l# and Saldo )" ,.........; b. select Nomor?in8aman from ?in8aman where saldo between ,...... and ,.......; c. select Nomor?in8aman from ?in8aman where between ,...... and ,.......; saldo not

d. select NamaNasabah, ?emin8am.Nomor?in8aman, Saldo from ?emin8am, ?in8aman where ?emin8am.Nomor?in8aman "?in8aman.Nomor?in8aman;

27

e. select NamaNasabah from ?enab4ng where alamat like @BkartaB#; f. select ; from ?in8aman Nomor?in8aman asc; order b! saldo desc,

g. select a<g (saldo) from >ekening where Nama*abang " @Cog!akarta#; h. select Nama*abang, a<g (saldo) from >ekening gro4 Nama*abang; b!

i. select Nama*abang, co4nt (distinct NamaNasabah) from ?enab4ng, >ekening where ?enab4ng.Nomor>ekening " >ekening.Nomor>ekening gro4 b! Nama*abang; 8. select Nama*abang, a<g (saldo) from >ekening gro4 Nama*abang ha<ing a<g (saldo) ) ,.......; k. select co4nt (;) from Nasabah; l. select ?enab4ng.NamaNasabah, a<g (saldo) from ?enab4ng, >ekening, Nasabah where ?enab4ng.Nomor>ekening " >ekening.Nomor>ekening and ?enab4ng.NamaNasabah " Nasabah.NamaNasabah and DotaNasabah " @Cog!akarta# 7ro4 b! ?enab4ng.NamaNasabah ha<ing co4nt (distinct ?enab4ng.Nomor>ekening) )"E; m. select distinct NamaNasabah from ?emin8am, ?in8aman where ?emin8am.Nomor?in8aman " ?in8aman.NomorNasabah and Nama*abang " @Cog!akarta# and (Nama*abang, NamaNasabah) in (select Nama*abang, NamaNasabah from ?enab4ng, >ekening where ?enab4ng.NomorNasabah " >ekening.Nomor>ekening); n. select distinct NamaN%sabah from ?emin8am where NamaNasabah not in (select NamaNasabah from ?enab4ng); o. select distinct /.Nama*abang from *abang as /, cabang as S where /.%sset ) S. %sset and S.Dota*abang"#Cog!akarta#; b!

28

. select Nama*abang from *abang where %sset ) some (select %sset from *abang where Dota*abang "#Cog!akarta#);

F. select Nama*abang from *abang where %sset ) all (select %sset from *abang where Dota*abang "#Cog!akarta#); r. select /.NamaNasabah from ?enab4ng as / where 4niF4e (select >ekening, ?enab4ng as > where /.NamaNasabah " >.NamaNasabah and >.Nomor>ekening " >ekening.Nomor>ekening and >ekening.Nama*abang "#Aant4l#); s. select /.NamaNasabah from ?enab4ng as / where 4niF4e (select >ekening, ?enab4ng as > where /.NamaNasabah " >.NamaNasabah and >.Nomor>ekening " >ekening.Nomor>ekening and >ekening.Nama*abang "#Aant4l#); t. select Nama*abang, rata_saldo from (select Nama*abang, a<g(saldo) from >ekening gro4 b! Nama*abang) as rata_cabang (Nama*abang, rata_saldo)) where rata_saldo ) ,......; 4. select ma5(saldo_total) from (select Nama*abang, s4m(saldo) from >ekening gro4 b! Nama*abang) as total_cabang (Nama*abang, saldo_total)); E" T +a$ 5kan diberikan pada saat praktikum.

29

You might also like