Kamis, 17 Januari 2013

subquery

 GAJI
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)

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)