DARI KARYAWAN
MANA GAJI>
(
PILIH GAJI
DARI KARYAWAN
MANA EMPLOYEED_ID = 100
)
2. Menulis query untuk menemukan karyawan yang semuanya mendapatkan gaji tertinggi?
SELECT employee_id,
GAJI
DARI KARYAWAN
MANA GAJI =
(
SELECT MAX (GAJI)
DARI KARYAWAN
)
3. Menulis query untuk menemukan departemen di mana gaji sedikit lebih besar dari gaji tertinggi di departemen id 200?
SELECT department_id,
MIN (GAJI)
DARI KARYAWAN
GROUP BY department_id
HAVING MIN (GAJI)>
(
SELECT MAX (GAJI)
DARI KARYAWAN
Dimana department_id = 200
)
Subquery Row Contoh beberapa
1. Menulis query untuk menemukan karyawan yang gajinya sama dengan gaji setidaknya satu karyawan di departemen id 300?
SELECT employee_id,
GAJI
DARI KARYAWAN
MANA GAJI DI
(
PILIH GAJI
DARI KARYAWAN
Dimana department_id = 300
)
2. Menulis query untuk menemukan karyawan yang gajinya lebih besar dari setidaknya pada karyawan di departemen id 500?
SELECT employee_id,
GAJI
DARI KARYAWAN
MANA GAJI> APAPUN
(
PILIH GAJI
DARI KARYAWAN
Dimana department_id = 500
)
3. Menulis query untuk menemukan karyawan yang gajinya kurang dari gaji semua karyawan di departemen id 100?
SELECT employee_id,
GAJI
DARI KARYAWAN
MANA GAJI <ALL
(
PILIH GAJI
DARI KARYAWAN
Dimana department_id = 100
)
4. Menulis query untuk menemukan karyawan yang manajer dan departemen harus sesuai dengan karyawan id 20 atau 30?
SELECT employee_id,
MANAGER_ID,
Department_id
DARI KARYAWAN
MANA (MANAGER_ID, department_id) DI
(
SELECT MANAGER_ID,
Department_id
DARI KARYAWAN
MANA employee_id IN (20,30)
)
5. Menulis query untuk mendapatkan nama departemen karyawan?
SELECT employee_id,
Department_id,
(SELECT DEPARTMENT_NAME
DARI DEPARTEMEN D
MANA D.DEPARTMENT_ID = e.department_id
)
DARI E KARYAWAN
Berkorelasi subqueries Contoh
Sub query berkorelasi digunakan untuk baris demi baris pengolahan. Sub query dijalankan untuk setiap baris dari query utama.
1. Menulis query untuk menemukan karyawan produktif tertinggi di departemen masing-masing?
SELECT department_id,
Employee_id,
GAJI
DARI KARYAWAN E_0
WHERE 1 =
(
SELECT COUNT (DISTINCT GAJI)
DARI KARYAWAN E_I
MANA E_O.DEPARTMENT_ID = E_I.DEPARTMENT_ID
DAN E_O.SALARY <= E_I.SALARY
)
2. Menulis query untuk daftar nama departemen yang memiliki sewa satu karyawan?
SELECT department_id,
DEPARTMENT_NAME
DARI DEPARTEMEN D
MANA ADA
(
SELECT 1
DARI E KARYAWAN
MANA e.department_id = D.DEPARTMENT_ID)
3. Menulis query untuk menemukan departemen yang tidak memiliki karyawan sama sekali?
SELECT department_id,
DEPARTMENT_NAME
DARI DEPARTEMEN D
MANA TIDAK ADA
(
SELECT 1
DARI E KARYAWAN
MANA e.department_id = D.DEPARTMENT_ID)
SELECT MAX (GAJI)
DARI KARYAWAN
Dimana department_id = 200
)
Subquery Row Contoh beberapa
1. Menulis query untuk menemukan karyawan yang gajinya sama dengan gaji setidaknya satu karyawan di departemen id 300?
SELECT employee_id,
GAJI
DARI KARYAWAN
MANA GAJI DI
(
PILIH GAJI
DARI KARYAWAN
Dimana department_id = 300
)
2. Menulis query untuk menemukan karyawan yang gajinya lebih besar dari setidaknya pada karyawan di departemen id 500?
SELECT employee_id,
GAJI
DARI KARYAWAN
MANA GAJI> APAPUN
(
PILIH GAJI
DARI KARYAWAN
Dimana department_id = 500
)
3. Menulis query untuk menemukan karyawan yang gajinya kurang dari gaji semua karyawan di departemen id 100?
SELECT employee_id,
GAJI
DARI KARYAWAN
MANA GAJI <ALL
(
PILIH GAJI
DARI KARYAWAN
Dimana department_id = 100
)
4. Menulis query untuk menemukan karyawan yang manajer dan departemen harus sesuai dengan karyawan id 20 atau 30?
SELECT employee_id,
MANAGER_ID,
Department_id
DARI KARYAWAN
MANA (MANAGER_ID, department_id) DI
(
SELECT MANAGER_ID,
Department_id
DARI KARYAWAN
MANA employee_id IN (20,30)
)
5. Menulis query untuk mendapatkan nama departemen karyawan?
SELECT employee_id,
Department_id,
(SELECT DEPARTMENT_NAME
DARI DEPARTEMEN D
MANA D.DEPARTMENT_ID = e.department_id
)
DARI E KARYAWAN
Berkorelasi subqueries Contoh
Sub query berkorelasi digunakan untuk baris demi baris pengolahan. Sub query dijalankan untuk setiap baris dari query utama.
1. Menulis query untuk menemukan karyawan produktif tertinggi di departemen masing-masing?
SELECT department_id,
Employee_id,
GAJI
DARI KARYAWAN E_0
WHERE 1 =
(
SELECT COUNT (DISTINCT GAJI)
DARI KARYAWAN E_I
MANA E_O.DEPARTMENT_ID = E_I.DEPARTMENT_ID
DAN E_O.SALARY <= E_I.SALARY
)
2. Menulis query untuk daftar nama departemen yang memiliki sewa satu karyawan?
SELECT department_id,
DEPARTMENT_NAME
DARI DEPARTEMEN D
MANA ADA
(
SELECT 1
DARI E KARYAWAN
MANA e.department_id = D.DEPARTMENT_ID)
3. Menulis query untuk menemukan departemen yang tidak memiliki karyawan sama sekali?
SELECT department_id,
DEPARTMENT_NAME
DARI DEPARTEMEN D
MANA TIDAK ADA
(
SELECT 1
DARI E KARYAWAN
MANA e.department_id = D.DEPARTMENT_ID)
Jenis Subquery:
1. Single-row subquery
Merupakan subquery yang hanya menghasilkan
satu baris dan satu kolom data atau data
tanggal
Diatas merupakan contoh single row subquery.
Jika kondisi yang diinginkan lebih dari
satu, kondisi dapat digabungkan menggunakan
operator logika and atau or.
Group Function pada subquery:
Pada subquery juga bisa menggunakan group
function seperti AVG, MAX dan MIN.
2. Multi-row subquery
Menghasilkan lebih dari satu row. Tanda
pembanding yang digunakan dalam multi row
subquery adalah tanda pembanding jamak yaitu
IN, ANY dan ALL.
3
3. Multi-column Subquery
Multi Column Subquery adalah subquery yang
menghasilkan lebih dari satu kolom. Biasa
disebut juga pairwise subquery. Jumlah dan
posisi kolom dari outer query yang akan
dibandingkan harus sama dengan jumlah dan
posisi kolom pada subquery. Setiap row
pada outer query dibandingkan dengan nilai
dari multiple-row dan multiple-column pada
subquery. Penghubung yang digunakan biasanya
IN
4. Correlated subquery
Berbeda dari subquery didepan yang disebut
scalar subquery karena bagian subquery
akan diproses terlebih dahulu untuk menyeleksi
outer querynya. Pada Corelated sebquery
ini outer subquery akan diproses terlebih dahulu
kemudian hasilnya akan dijadikan
4
rujukan untuk memproses subquery. Disebut
correlated subquery karena subquery
dikerjakan berdasarkan rujukan data dari out
query. Pendefinisian korelasi antara outer
query dan subquery dilakukan pada klausa where
di subquery. Pada correlated subquery,
subquery akan dikerjakan sebanyak jumlah baris
di out query.
Selanjutnya kita akan mencoba melakukan
correlated subquery pada user scott, berikan
perintah alter ke user scott dengan cara
5. Inline View
Merupakan cara untuk mengumpulkan data yang
akan dianggap oleh query utama sebagai
sebuah tabel untuk keperluan
pengaksesan query.
A.
PEMBAHASAN
B.
KESIMPULAN
Jadi kesimpulannya Subquery
dapat digunakan untuk menghasilkan nilai-nilai bagi outer query pada saat
kriteria pencarian yang dibutuhkan tidak diketahui.
E.DAFTAR PUSTAKA
§
Modul praktikum 10(SUBQUERY)