SUBQUERY-2. MI2154 SQL LANJUT Dedy Rahman Wijaya, S.T., M.T., OCA

dokumen-dokumen yang mirip
Bab 3. Query Lanjutan POKOK BAHASAN: TUJUAN BELAJAR:

Oracle Academic Initiative

Sub Query. Rosa Ariani Sukamto Blog: Website:

Arsitektur Basis Data Oracle

B a s i s D a t a C H A P T E R. SQL Operasi DML. Arif Basofi PENS 2015

B a s i s D a t a - 1 C H A P T E R. SQL Operasi DML. Copyright 2005 PENS-ITS

B a s i s D a t a - 1 C H A P T E R. SQL Operasi DML. Copyright 2005 PENS-ITS

Perkenalan SQL. Ada empat macam tipe database yaitu hirarki, jaringan, relasional, dan objek.

Oracle Academic Initiative

Oracle Academic Initiative

IKG2I4 / Software Project I

PERTEMUAN 6 SUBQUERY

B a s i s D a t a C H A P T E R SQL OPERASI JOIN. Arif Basofi PENS 2015

PRACTISE

Oracle Academic Initiative

B a s i s D a t a - 1 C H A P T E R SQL OPERASI JOIN. Copyright 2005 PENS-ITS

MODUL 8. Sub Query Pada baris dan Kolom PRAKTIKUM BASIS DATA LANJUT TEKNIK PERANGKAT LUNAK UNIVERSITAS PGRI RONGGOLAWE

B a s i s D a t a. Tatap MUka. SQL Query & Agregate Function. Arif Basofi PENS

Menggunakan Subquery untuk Memecahkan Query Query

STRUCTURE QUERY LANGUAGE DDL & DML

Oracle Academic Initiative

PERINTAH SQL DAN INTERKONEKSI PHP-MySQL

PERTEMUAN 9 MANIPULASI DATA

Basis Data 1. Dasar SQL Query. Arif Basofi, S.Kom. MT. Teknik Informatika, PENS

15-Jan DATABASE - MySQL. Database. Constraints. Tujuan: Memahami perintah-perintah dasar DDL dan DML

Pertemuan 10 Structure Query Language(SQL)

Oracle Academic Initiative

TABLE JOIN SQL SERVER 2005

BAB 4 : Interaksi PL/SQL dengan Oracle Server

DATABASE - MySQL. Muhammad Zen S. Hadi, ST. MSc.

Tutorial Database Oracle Chapter3 Menampilkan Data Menggunakan Perintah SQL SELECT

@Tessy Badriyah, SKom. MT. PERTEMUAN 12 VIEW

Praktikum Sistem Basis Data

Apa yang akan dibahas? Pengertian SQL Penggolongan Statement SQL Aturan Gramatika SQL Struktur Dasar SQL Query Satu (1) Tabel

MODUL 4. Query SELECT dan DML (INSERT, UPDATE, DELETE) PRAKTIKUM BASIS DATA LANJUT TEKNIK PERANGKAT LUNAK UNIVERSITAS PGRI RONGGOLAWE

Oracle Academic Initiative

Schema Objects. MI2154 SQL LANJUT Dedy Rahman Wijaya, S.T., M.T., OCA

Oracle Academic Initiative

Menampilkan Data Dari Beberapa Tabel

PRAKTIKUM 5 SISTEM BASIS DATA JOIN

Menggunakan Set Operators

LAPORAN PRAKTIKUM BASIS DATA LANJUT I

RENCANA PEMBELAJARAN

Oracle Academic Initiative

VIEW : Tabel Virtual VIEW 5/29/2017

Oracle Academic Initiative

Bab 5. Database Trigger POKOK BAHASAN: TUJUAN BELAJAR: 5.1. PENDAHULUAN

Tutorial Database Oracle Chapter4 Pembatasan dan Pengurutan

LAPORAN PRAKTIKUM BASIS DATA LANJUT I

Esson Sihombing, S.Kom. Lab. Basisdata 1 Sistem Informasi UNIKOM 2013

B a s i s D a t a C H A P T E R. SQL Operasi DDL. Arif Basofi PENS 2015

M0564-Pengantar Sistem Basisdata 12/ 1

Praktikum Basis Data 14 Structure Query Language 2

B a s i s D a t a - 1 C H A P T E R. SQL Operasi DDL. Copyright 2005 PENS-ITS

MODUL 3. View PRAKTIKUM BASIS DATA LANJUT TEKNIK PERANGKAT LUNAK UNIVERSITAS PGRI RONGGOLAWE

CONSTRAINT clients_client_num_pk PRIMARY KEY (client_number));

Modul 3 : Query Penggabungan Tabel

BAB 2 LANDASAN TEORI Pengertian DBMS (Database Management System)

SQL Data Definition Language (DDL)

PERTEMUAN 5 PENGGUNAAN FUNGSI GROUP

Praktikum Basis Data 2017 TE UM MODUL 6 SUB QUERY

Untuk mencoba contoh-contoh perintah join, silahkan eksekusi query create+insert dibawah ini:

Data Manipulation Language (DML)

B a s i s D a t a - 1 C H A P T E R SQL. Function & Agregat. Copyright 2005 PENS-ITS

Oracle Academic Initiative

Basis Data. Bagian IV SQL (2) Fak. Teknik Jurusan Teknik Informatika Universitas Pasundan

B a s i s D a t a - 1 C H A P T E R. SQL Lanjutan 1. Copyright 2005 PENS-ITS

MODUL 7. Advanced Query : Menampilkan Data Dari Banyak Tabel PRAKTIKUM BASIS DATA LANJUT TEKNIK PERANGKAT LUNAK UNIVERSITAS PGRI RONGGOLAWE

Oracle Academic Initiative

Praktikum Basis Data. By. Rita Wiryasaputra, ST., M. Cs.

SUBQUERY VIEW JOIN PRAKTIKUM BERKAS DAN BASIS DATA 2010/2011. Rizki Arif Firdaus

PERTEMUAN 4 MENAMPILKAN DATA DARI BANYAK TABEL

GARIS-GARIS BESAR PROGRAM PENGAJARAN (GBPP) PROGRAM STUDI : DIII MANAJEMEN INFORMATIKA Semester : 4

Pernyataan Data Manipulation Language (DML) SQL

BAHASA QUERY KOMERSIAL

MENAMPILKAN DATA DARI BANYAK TABEL

Macam - Macam Perintah Pada SQL

S Q L. Sejarah SQL. Penulisan Perintah SQL. SQL (Structure Query Language)

BAHASA QUERY KOMERSIAL

PERTEMUAN 10 PEMBUATAN TABEL

MODUL V DATA MANIPULATION LANGUAGE (DML) 1

Riyanto

SQL I. TPI4210 Sistem dan Teknologi Informasi

Pertemuan 11. Bahasa Query Terapan Lanjutan

Pertemuan DDL INDIKATOR. Modul Teori Database Aknela

Pertemuan VI F U N C T I O N

3 rd DML : Selection(3)

BAHASA QUERY KOMERSIAL

Basis Data. Bagian IV SQL (3) Fak. Teknik Jurusan Teknik Informatika Universitas Pasundan

BAHASA QUERY KOMPLEKS

PERTEMUAN 2 PEMILIHAN DAN PENGURUTAN DATA

PENGANTAR TEKNOLOGI SISTEM INFORMASI MANAGEMENT 2

MODUL 5. Advanced Query : Pemilihan dan Pengurutan Data PRAKTIKUM BASIS DATA LANJUT TEKNIK PERANGKAT LUNAK UNIVERSITAS PGRI RONGGOLAWE

Optimasi Query. Optimasi Perintah SQL Informasi Jalur Akses Query Faktor-faktor yang berpengaruh terhadap kecepatan akses data

PERTEMUAN 8 PENGATURAN OUTPUT PADA SQL*PLUS

Tujuan. Tujuan. Oracle Database 10g: SQL Fundamentals I 8 2

Structured Query Language

1. Kompetensi Memahami berbagai cara (perintah SQL) yang digunakan untuk mengakses data dari banyak tabel.

STRUCTURE QUERY LANGUAGE (SQL)

MODUL 4 INTERNET PROGRAMMING DATABASE

Transkripsi:

SUBQUERY-2 MI2154 SQL LANJUT Dedy Rahman Wijaya, S.T., M.T., OCA dedyrw@tass.telkomuniversity.ac.id

Sasaran Pembelajaran Mampu menulis multiple-column subquery Mampu menyelesaikan kasus menggunakan correlated subqueries Mampu menggunakan operator EXIST dan NOT EXISTS Mampu menggunakan klausa WITH

Multiple-Column Subqueries Single-Column Subqueries WHERE department_id IN (SELECT department_id FROM employees..) Multiple-Column Subqueries WHERE (manager_id, department_id) IN (SELECT manager_id, department_id FROM employees..)

Syntax: SELECT column, column,... FROM table WHERE (column, column,...) IN (SELECT column, column,... FROM table WHERE condition);

Mekanisme Pembandingan Kolom Pairwise comparisons Nonpairwise comparisons

Pairwise&NonPairwise Comparison Subquery Menampilkan pegawai yang bekerja pada department dan memiliki manager yang sama dengan pegawai 199 dan 174 Pairwise SELECT employee_id, manager_id, department_id, first_name FROM employees WHERE (manager_id, department_id) IN (SELECT manager_id, department_id FROM employees WHERE employee_id IN (199,174)) AND employee_id NOT IN (199,174) ORDER BY employee_id; VS NonPairwise SELECT employee_id, manager_id, department_id, first_name FROM employees WHERE manager_id IN(SELECT manager_id FROM employees WHERE employee_id IN (199,174)) AND department_id IN (SELECT department_id FROM employees WHERE employee_id IN (199,174)) AND employee_id NOT IN (199,174) ORDER BY employee_id;

Correlated Subqueries Correlated subquery menggunakan pemrosesan data baris per baris Subquery dieksekusi untuk setiap data pada kueri induknya

Correlated Subqueries SELECT employee_id, last_name FROM employees outer WHERE salary > (SELECT avg(salary) FROM employees WHERE outer.department_id=department_id) ORDER BY employee_id

Correlated UPDATE Menggunakan subquery untuk meng-update data pada suatu tabel berdasarkan data pada tabel lain

Correlated DELETE Menggunakan subquery untuk menghapus data pada suatu tabel berdasarkan data pada tabel lain

Menggunakan Operator EXISTS Operator EXISTS memeriksa apakah subquery menghasilkan data atau tidak. Jika subquery menghasilkan data maka: Proses pencarian data tidak dilanjutkan Kondisi di-set menjadi TRUE Jika subquery tidak menghasilkan data maka: Proses pencarian data dilanjutkan Kondisi di-set menjadi FALSE

Contoh Penggunaan Operator EXISTS

Klausa WITH Dengan menggunakan klausa WITH, kita dapat menggunakan blok query yang sama dalam statement SELECT pada saat terjadi lebih dari sekali pengambilan data dalam query yang kompleks. Klausa WITH mendapatkan hasil dari blok query dan menyimpannya dalam tablespace temporer milik user. Penggunaan klausa WITH dapat meningkatkan performansi karena pengambilan data hanya dilakukan sekali dan dapat digunakan berulang-ulang dalam satu perintah.

Kasus yang dapat diselesaikan menggunakan klausa WITH Dengan menggunakan klausa WITH, tuliskan query untuk menampilkan nama departemen dan total gaji bagi setiap departemen yang total gajinya lebih besar dari rata-rata seluruh gaji departemen yang ada. Solusi untuk permasalahan diatas: 1. Hitung total gaji untuk setiap departemen dan simpan hasilnya dengan menggunakan klausa WITH 2. Hitung rata-rata gaji seluruh departemen dan simpan hasilnya dengan menggunakan klausa WITH 3. Bandingkan total gaji yang telah dihitung dalam langkah pertama dengan rata-rata gaji yang dihitung dalam langkah kedua. Jika total gaji lebih besar dari rata-rata gaji maka tampilkan nama departemen dan total gaji bagi departemen tersebut.

Solusi tanpa menggunakan klausa WITH SELECT d.department_name, SUM(e.salary) AS dept_total FROM employees e JOIN departments d ON e.department_id = d.department_id GROUP BY d.department_name HAVING SUM(e.salary) > (SELECT SUM(dept_total)/COUNT(*) AS dept_avg FROM (SELECT d.department_name, SUM(e.salary) AS dept_total FROM employees e JOIN departments d ON e.department_id = d.department_id GROUP BY d.department_name)) Query Induk Subquery Query Induk = Subquery dan dipanggil lebih dari 1 X

Solusi menggunakan klausa WITH WITH dept_costs AS ( SELECT d.department_name, SUM(e.salary) AS dept_total FROM employees e JOIN departments d ON e.department_id = d.department_id GROUP BY d.department_name), avg_cost AS ( SELECT SUM(dept_total)/COUNT(*) AS dept_avg FROM dept_costs) SELECT * FROM dept_costs WHERE dept_total > (SELECT dept_avg FROM avg_cost) ORDER BY department_name;