Lesson 1 : Memperoleh Data Menggunakan Pernyataan SQL SELECT Baca Selengkapnya >>
Lesson 2 : Membatasi dan Mengurutkan Data Baca Selengkapnya >>
Lesson 3 : Menggunakan Fungsi Baris Tunggal untuk Menyesuaika Output Baca Selengkapnya >>
Lesson 4 : Melaporkan Pengumpulan Data Menggunakan Fungsi Group Baca Selengkapnya >>
Lesson 5 : Menampilkan Data dari Beberapa Tabel Baca Selengkapnya >>
Lesson 6 : Menggunakan Subquerie untuk Menyelesaikan Queri Baca Selengkapnya >>
Senin, 14 November 2011
Lesson 6 : Menggunakan Subquerie untuk Menyelesaikan Queri
Setelah melengkapi pelajaran ini, kamu harus mampu untuk melakukan hal-hal berikut:
- Definisikan subqueries
- Deskripsikan jenis dari masalah yang subqueries dapat selesaikan
- Daftarkan jenis dari subqueries
- Tulis baris tunggal dan baris perkalian subqueries
Menggunakan Sebuah SubqueriSELECT last_nameFROM employeesWHERE salary >(SELECT salaryFROM employeesWHERE last_name = 'Abel');
Melaksanakan Subqueri Baris TunggalSELECT last_name, job_id, salaryFROM employeesWHERE job_id =(SELECT job_idFROM employeesWHERE employee_id = 141)AND salary >(SELECT salaryFROM employeesWHERE employee_id = 143);
Menggunakan Fungsi Group dalam Sebuah SubqueriSELECT last_name, job_id, salaryFROM employeesWHERE salary =(SELECT MIN(salary)FROM employees);
Kalimat HAVING dengan SubqueriSELECT department_id, MIN(salary)FROM employeesGROUP BY department_idHAVING MIN(salary) >(SELECT MIN(salary)FROM employeesWHERE department_id = 50);Apa yang terjadi dengan pernyataan ini?SELECT employee_id, last_nameFROM employeesWHERE salary =(SELECT MIN(salary)FROM employeesGROUP BY department_id);Akankah pernyataan ini menhasilkan baris?SELECT last_name, job_idFROM employeesWHERE job_id =(SELECT job_idFROM employeesWHERE last_name = 'Haas');Menggunakan Operator Apapun dalam Subqueri Multiple-RowsSELECT employee_id, last_name, job_id, salaryFROM employeesWHERE salary < ANY(SELECT salaryFROM employeesWHERE job_id = 'IT_PROG')AND job_id <> 'IT_PROG';
Menggunakan Semua Operator dalam Subqueri Multiple-RowsSELECT employee_id, last_name, job_id, salaryFROM employeesWHERE salary < ALL(SELECT salaryFROM employeesWHERE job_id = 'IT_PROG')AND job_id <> 'IT_PROG';Nilai NULL pada SubqueriSELECT emp.last_nameFROM employees empWHERE emp.employee_id NOT IN(SELECT mgr.manager_idFROM employees mgr);
Lesson 5 : Menampilkan Data dari Beberapa Tabel
Setelah melengkapi pelajaran ini, kamu harus mampu untuk melakukan hal-hal berikut:
Mendapatkan Kembali Dokumen dengan Penggabungan Natural
Mendapatkan Kembali Dokumen dengan Kalimat USING
Menggunakan Nama Lain Tabel
Mempergunakan nama lain tabel untuk menyederhanakan queri-queri.
Mempergunakan nama lain tabel untuk meningkatkan kinerja
Menerapkan Kondisi Tambahan pada Sebuah Penggabungan
Membuat Penggabunga THREE-WAY dengan Kalimat ON
Mengembalikan Dokumen dengan Non-Equijoins
Right Outer Join
FULL OUTER JOIN
- Tulis pernyataan SELECT untuk mengakses data dari lebih dari satu tabel mempergunakan equijoins dan bukan equijoins
- Gabungkan satu tabel itu sendiri dengan menggunakan join-self
- Lihat data yang umumnya tidak menjumpai satu kondisi gabungan dengan mempergunakan penggabungan luar (outer join)
Mendapatkan Kembali Dokumen dengan Penggabungan Natural
SELECT department_id, department_name,
location_id, city
FROM departments
NATURAL JOIN locations
;
Mendapatkan Kembali Dokumen dengan Kalimat USING
SELECT employees.employee_id, employees.last_name,
departments.location_id, department_id
FROM employees JOIN departments
USING (department_id) ;
Menggunakan Nama Lain Tabel
SELECT e.employee_id, e.last_name,
d.location_id, department_id
FROM employees e JOIN departments d
USING (department_id) ;
Mendapatkan Kembali Dokumen dengan Kalimat ON
SELECT e.employee_id, e.last_name, e.department_id,
d.department_id, d.location_id
FROM employees e JOIN departments d
ON (e.department_id = d.department_id);
Self-Join Menggunakan Kalimat ON
SELECT e.last_name emp, m.last_name mgr
FROM employees e JOIN employees m
ON (e.manager_id = m.employee_id);
Menerapkan Kondisi Tambahan pada Sebuah Penggabungan
SELECT e.employee_id, e.last_name, e.department_id,
d.department_id, d.location_id
FROM employees e JOIN departments d
ON (e.department_id = d.department_id)
AND e.manager_id = 149 ;
Membuat Penggabunga THREE-WAY dengan Kalimat ON
SELECT
employee_id,
city, department_name
FROM employees e
JOIN departments d
ON d.department_id = e.department_id
JOIN locations l
ON d.location_id = l.location_id;
Mengembalikan Dokumen dengan Non-Equijoins
SELECT
e.last_name, e.salary, j.grade_level
FROM employees e JOIN job_grades j
ON e.salary
BETWEEN j.lowest_sal AND
j.highest_sal;
Left Outer Join
SELECT e.last_name, e.department_id, d.department_name
FROM employees e LEFT OUTER JOIN departments d
ON (e.department_id = d.department_id) ;
Right Outer Join
SELECT e.last_name, e.department_id, d.department_name
FROM employees e RIGHT OUTER JOIN departments d
ON (e.department_id = d.department_id) ;
FULL OUTER JOIN
SELECT e.last_name, d.department_id, d.department_name
FROM employees e FULL OUTER JOIN departments d
ON (e.department_id = d.department_id) ;
Membuat Penggabungan Silang (CROSS)
SELECT last_name, department_name
FROM employees
CROSS JOIN departments
;
Lesson 4 : Melaporkan Pengumpulan Data Menggunakan Fungsi Group
Setelah melengkapi pelajaran ini, kamu harus mampu untuk melakukan hal-hal berikut:
- Mengidentifikasi fungsi grup yang tersedia
- Mendeskripsikan penggunaan dari fungsi grup.
- Penggolingan data dengan menggunakan kata GROUP BY
- Memasukkan atau mengeluarkan kumpulan baris dengan menggunakan kata HAVING
Menggunakan Fungsi AVD dan SUMSELECT AVG(salary), MAX(salary),MIN(salary), SUM(salary)FROM employeesWHERE job_id LIKE '%REP%';
Menggunakan Fungsi MIN dan MAXSELECT MIN(hire_date), MAX(hire_date)FROM employees;
Menggunakan Fungsi COUNTCOUNT (*) mengembalikan angka dari baris pada suatu tabelSELECT COUNT(*)FROM employees
WHERE department_id = 50;COUNT (expr) mengembalikan angka dari baris dengan nilai tidak NULL untuk exprSELECT COUNT(commission_pct)FROM employees
WHERE department_id = 80;
Menggunakan Kata Kunci DISTINCTSELECT COUNT(DISTINCT department_id)FROM employees;Fungsi Group dan Nilai NULLFungsi Group mengabaikan nilai NULL pada kolom :SELECT AVG(commission_pct)
FROM employees;
Fungsi NVL memaksa Fungsi Group untuk memasukkan nilai NULL:SELECT AVG(NVL(commission_pct, 0))FROM employees;
Menggunakan Kalimat GROUP BY
Semual kolom yang berada dalam daftar SELECT yang tidak ada dalam fungsi GROUP pasti berada dalam kalimat GROUP BYSELECT department_id, AVG(salary)FROM employeesGROUP BY department_id ;
Kolom GROUP BY tidak harus berada dalam daftar SELECTSELECT AVG(salary)FROM employeesGROUP BY department_id ;Menggunakan Kalimat GROUP BY pada Kolom PerkalianSELECT department_id dept_id, job_id, SUM(salary)FROM employeesGROUP BY department_id, job_id ;
Queri-Queri Ilegal Menggunakan Fungsi GroupKolom atau ekspresi apapun dalam daftar SELECT yang bukan kumpulan fungsi pasti berada dalam kalimat GROUP BY :SELECT department_id, COUNT(last_name)FROM employees;SELECT department_id, AVG(salary)FROM employeesWHERE AVG(salary) > 8000GROUP BY department_id;Menggunakan Kalimat HAVINGSELECT department_id, MAX(salary)FROM employeesGROUP BY department_idHAVING MAX(salary)>10000 ;SELECT job_id, SUM(salary) PAYROLLFROM employeesWHERE job_id NOT LIKE '%REP%'GROUP BY job_idHAVING SUM(salary) > 13000ORDER BY SUM(salary);
Fungsi Group CadanganMenampilkan rata-rata gaji maksimumSELECT MAX(AVG(salary))FROM employeesGROUP BY department_id;
Langganan:
Postingan (Atom)