• Tidak ada hasil yang ditemukan

MODUL V QUERY QUERY KOMPLEKS dan FUNGSI

N/A
N/A
Protected

Academic year: 2018

Membagikan "MODUL V QUERY QUERY KOMPLEKS dan FUNGSI"

Copied!
8
0
0

Teks penuh

(1)

MODUL V

QUERY , QUERY KOMPLEKS dan FUNGSI AGREGAT (3 pertemuan)

A. Maksud

Menjelaskan penggunaan query serta fungsi-fungsi agregat untuk memperoleh data

B. Tujuan

 Mahasiswa memahami berbagai perintah query.

 Mahasiswa memahami berbagai fungsi agregat dan penggunaannya.  Mahasiswa mampu membuat query untuk memperoleh data.

C. Dasar Teori

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 mengevaluasi dari expression dalam induk perintah select. Jika kita ingin membandingkan dua atau lebih kolom, kita harus menulis sebuah gabungan klausa WHERE menggunakan operator logika. Menggunakan multiple-subqueries, kita dapat mengkombinasikan duplikat kondisi where ke dalam satu klausa WHERE. Syntak;

select kolom, kolom,… from table

where (kolom, kolom,…) IN

(2)

Perbandingan Kolom

Multiple-kolom membandingkan ke dalam subquery dan dijadikan campuran perbandingan atau pasangan perbandingan. Jika 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, department_id from employees

where manager_id IN (select manager_id from employees where firt_name=’Daniel)

AND department_id IN (select department_id

From employees where firt_name=’Daniel’);

Pasangan perbandingan subquery

Menampilkan secara detail dari pekerja yang di manage oleh beberapa manager and bekerja di beberapa department sebagai pekerja yang first_name nya adalah “John”.

select employee_id, manager_id, department_id from employees where

(manager_id, department_id) IN

( select manager_id, department_id from employees where first_name='John')

AND first_name <> 'John'

Pada 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 “John”, subquery untuk menndapatkan kembali nilai dari manager_id dan department_id untuk employees dengan first_name “John” dieksekusi.

(3)

NonPasangan Perbandingan Subquery

Menampilkan secara detail dari pekerja yang dimanage beberapa manager pekerja dengan firt_name “John” dan bekerja di beberap department dengan first_name John

select employee_id, manager_id, department_id from employees

where manager_id IN (select manager_id from employees

where first_name='John') AND

department_id IN

(select department_id from employees

where first_name='John') AND

first_name<>'John';

Ekspresi-ekspresi Scalar Subquery

Scalar subquery adalah subquery yang mengembalikan tepat satu nilai kolom dari satu baris. Scalar subquery dapat digunakan di:

 Bagian kondisi dan expresi dari DECODE and CASE  Semua klausa dari SELECT kecuali GROUP BY

Contoh scalar subquery dapa CASE expression select employee_id, last_name,( CASE

when department_id=

(select department_id from departments where location_id=1800)

THEN 'Canada' ELSE 'USA' END) location from employees

Contoh subquery dalam klausa order by

select employee_id, last_name from employees e

(4)

Korelasi Subquery

Korelasi subquery digunakan untuk proses baris-perbaris.Masng-masing subquery di eksekusi setelah setiap baris setelah query paling luar. Oracle server menampilkan sebuah korelasi query mengacu sebuah kolom dari table yang menunjuk dapa parent statement. Korelasi subquery dievalusi ketika setiap baris diproses oleh statement induk. Induk statement dapat berupa select, update atau delete.

Syntak

Select kolom1, kolom2,… From table1 outer

Where kolom1 operator (select kolom1, kolom2,.. From table2

Where expresi=outer.expresi2);

Menampilkan semua pekerja yang mendapatkan lebih dari rata-rata gajidari department tertentu

select last_name, salary, department_id from employees outer

where salary >

(select AVG(salary) from employees

where department_id=outer.department_id);

Menggunakan Operator Exists

Operator EXISTS mengecek keberadaan dari baris dalam hasil subquery. Jika Nilai baris dari subquery ditemukan:

o Pencarian tidak akan dilanjutkan dalam query terdalam o Kondisi tetap benar

Jika Nilai baris dari subquery tidak ditemukan: o Kondisi akan salah

(5)

Menemukan pekerja yang memiliki laporan orang paling sedikit memberikan laporan

select employee_id, last_name, job_id, department_id from employees outer

where EXISTS ( select 'X' from employees where manager_id=outer.employee_id);

Korelasi Update

Menggunakan korelasi query untuk update baris berdasar pada baris dari table lain

Syntak

Update table1 alias

Set kolom=(select expression From table2 alias

Where alias1.kolom=alias2.kolom);

Denormalisasi table EMP16 dengan menambahkan sebuah kolom untuk memasukan pada department name.

Create table emp16 as select * from employees;

Alter table emp16 add(department_name varchar2(25));

Select department_name from emp16;

update emp16 e set department_name=

(select department_name from departments d where e.department_id=d.department_id);

Select department_name from emp16;

Korelasi Delete

Menggunakan korelasi subquery untuk mendelete row berdasarkan pada baris dari table lain

Syntak

DELETE from table1 alias WHERE kolom operator

(6)

DELETE from emp16 E where employee_id=(

select employee_id from employees where

employee_id=E.employee_id);

select * from emp16;

D. Praktik

1. Praktikkan sintak-sintak yang ada didalam kotak pada modul ini dengan menggunakan tabel employees. Amati hasilnya

2. Untuk praktik berikut, buatlah tabel-tabel dengan struktur dibawah ini dan isi datanya masing-masing tabel minimal 10 record.

Cabang Rekening Penabung perintah tersebut. Jika 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. Contoh 1000000000 diganti menjadi 1000000.

a. select NomorPinjaman from Pinjaman where NamaCabang = ‘Bantul’ and Saldo >= 1000000000;

b. select NomorPinjaman from Pinjaman where saldo between 1000000 and 10000000;

c. select NomorPinjaman from Pinjaman where saldo not between 1000000 and 10000000;

(7)

f. select * from Pinjaman order by saldo desc, NomorPinjaman asc;

g. select avg (saldo) from Rekening where NamaCabang = ‘Yogyakarta’;

h. select NamaCabang, avg (saldo) from Rekening group by NamaCabang;

i. select NamaCabang, count (distinct NamaNasabah) from Penabung, Rekening where Penabung.NomorRekening = Rekening.NomorRekening group by NamaCabang;

j. select NamaCabang, avg (saldo) from Rekening group by NamaCabang having avg (saldo) > 10000000;

k. select count (*) from Nasabah;

l. select Penabung.NamaNasabah, avg (saldo) from

Penabung, Rekening, Nasabah where

Penabung.NomorRekening = Rekening.NomorRekening and Penabung.NamaNasabah = Nasabah.NamaNasabah and

KotaNasabah = ‘Yogyakarta’ Group by

Penabung.NamaNasabah having count (distinct Penabung.NomorRekening) >=4;

m. select distinct NamaNasabah from Peminjam, Pinjaman

where Peminjam.NomorPinjaman = Pinjaman.NomorNasabah and NamaCabang = ‘Yogyakarta’

and (NamaCabang, NamaNasabah) in (select NamaCabang, NamaNasabah

from Penabung, Rekening

where Penabung.NomorNasabah = Rekening.NomorRekening);

n. select distinct NamaNAsabah from Peminjam

where NamaNasabah not in

(select NamaNasabah from Penabung);

o. select distinct T.NamaCabang from Cabang as T, cabang as S where T.Asset > S. Asset

(8)

where Asset > some (select Asset from Cabang

where KotaCabang =’Yogyakarta’);

q. select NamaCabang from Cabang

where Asset > all (select Asset from Cabang

where KotaCabang =’Yogyakarta’);

r. select T.NamaNasabah from Penabung as T where unique

(select Rekening, Penabung as R

where T.NamaNasabah = R.NamaNasabah and R.NomorRekening = Rekening.NomorRekening and Rekening.NamaCabang =’Bantul’);

s. select T.NamaNasabah from Penabung as T where unique

(select Rekening, Penabung as R

where T.NamaNasabah = R.NamaNasabah and R.NomorRekening = Rekening.NomorRekening

and Rekening.NamaCabang =’Bantul’);

t. select NamaCabang, rata_saldo

from (select NamaCabang, avg(saldo) from Rekening

group by NamaCabang)

as rata_cabang (NamaCabang, rata_saldo)) where rata_saldo > 1000000;

u. select max(saldo_total)

from (select NamaCabang, sum(saldo) from Rekening

group by NamaCabang) as

total_cabang (NamaCabang, saldo_total));

E. Tugas

Referensi

Dokumen terkait

Arti dari koefisien ini adalah bahwa pengaruh yang diberikan oleh kombinasi variabel pemanfaatan jam belajar di luar sekolah dan pendampingan belajar orang tua

Akhir dari tampilan layar TFT adalah gambar grafik yang dihasilkan sesuai pembacaan sensor serta perhitungan terhadap nilai karakteristik kurva arus dan tegangan (I-V) modul

Dari contoh di atas, diperoleh bahwa Nilai Akhir Akreditasi sama dengan 85 (Tabel 4, kolom 6, baris terakhir) dan seluruh Nilai Komponen Akreditasi Skala Ratusan pada

Metode Vogel’s Approximation (VAM) memiliki penyelesaian yang mendekati optimal karena melibatkan selisih terbesar dari dua biaya terkecil untuk setiap baris dan

(2) Senandung jolo pada umumnya disajikan dengan gaya repetitif dengan mengutamakan teks daripada melodi (strofic-logogenic). Teks nya merupakan pantun yang terdiri dari dua