Anda di halaman 1dari 34

STRUCTUR QUERY

LANGUAGE (SQL) 2
PERTEMUAN KE-11
FADLI H. WATTIHELUW.S.KOM,.M.KOM
SUB-TOPIK

• Nested subqueries
• Nilai null
• Penggunaan view
• Fungsi agregasi
FUNGSI AGREGASI
PENGERTIAN FUNGSI AGREGASI

Fungsi agregasi digunakan untuk menampilkan nilai-nilai atribut yang ada dalam tabel, sering
pula ada kebutuhan untuk menampilkan data-data agregasi. Seperti: Banyaknya record, total
nilai suatu atribut, rata-rata nilai atribut, nilai atribut terbesar atau terkecil. Data agregasi
tersebut dapat diperoleh dengan fungsi-fungsi yang juga kita temukan padanannya dalam
bahasa query formal.
FUNGSI AGREFASI

Beberapa fungsi agregasi yang sering digunakan sebagai berikut :


 Count untuk mendapatkan nilai banyaknya record hasil query
 Sum untuk mendapatkan nilai total suatu atribut numerik hasil query
 Avg untuk mendapatkan nilai rata-rata suatu atribut numerik hasil query
 Max untuk mendapatkan nilai terbesar suatu atribut hasil query
 Min untuk mendapatkan nilai terkecil suatu atribut hasil query
Perkataan ‘hasil query’ pada uraian masing-masing fungsi agregasi di atas penting untuk diperhatikan, karena
fungs-fungsi tersebut memang hanya diberlakukan pada hasil query. Contoh, nilai sks terbesar untuk semua
mata kuliah (…FROM kuliah) belum tentu sama dengan nilai sks terbesar untuk mata kuliah yang ada di
semester 3 (…FROM kuliah WHERE semester = 3).
CONTOH PENERAPAN

• COUNT
Menampilkan banyaknya record mahasiswa :

Select count(*) From mahasiswa

• SUM
Menampilkan total sks untuk mata kuliah di semester 2 :
Select sum(*) From kuliah
Where semester = 2
CONTOH PENERAPAN…

• AVG
Menampilkan rata-rata sks untuk semua mata kuliah : Select avg(sks) from kuliah

• MAX
Menampikan IPK terbesar yang diperoleh mahasiswa untuk mata kuliah
dengan kode “IF-110” : Select max(ipk) from nilai
Where kode_kul = “IF-110”

• MIN
Menampilkan IPK terkecil yang diperoleh mahasiswa untuk mata kuliah dengan kode “IF-110” :
Select min(ipk) from nilai
Where kode_kul = “IF-110”
NILAI NULL
NILAI NULL

• Attribut-attribute di dalam sebuah table belum tentu telah memiliki nilai (data).
• Atribut-atribut yang belum memiliki nilai tersebut, biasanya diisi (secara sementara)
dengan nilai khusus yaitu null.
• Di dalam query ada perlakuan khusus terhadap keberadaan nilai null ini.
• Jika kita ketahui bahwa di table Nilai tidak semua data indeks_nilai sudah terisi data, maka
kita dapat menampilkan kode kuliah dari table tersebut, yang indeks_nilai nya masih
kosong
NILAI NULL…

Contoh perintah SQL untuk menampilkan data nilai kosong pada indeks_nilai :

SELECT DISTINCT kode_kul


FROM nilai
WHERE indeks_nilai is null

Berikut ini adalah perintah SQL untuk menghitung banyaknya baris data dalam table Nilai
yang atribut indeks_nilai nya telah terisi data ( artinya bukan NULL) :

SELECT COUNT(*)
FROM nilai
WHERE indeks_nilai IS NOT NULL
NESTED SUBQUERY
NESTED SUBQUERY

Subquery / nested query merupakan query dalam query SQL lain dan tertanam dalam
klausa WHERE.
Sebuah subquery digunakan untuk mengembalikan data yang akan digunakan dalam query
utama sebagai syarat untuk membatasi data yang akan di ambil.
Subqueries dapat digunakan dengan SELECT, INSERT, UPDATE dan DELETE statements
Bersama dengan operator seperti =, <, >, >=, <=, IN, BETWEEN, dll.
SINTAKS DASAR SUBQUERY

SELECT column_name [, column_name ]


FROM table1 [, table2 ]
WHERE column_name OPERATOR
(SELECT column_name [, column_name ]
FROM table1 [, table2 ]
[WHERE])
CONTOH SUBQUERY (1)

ID NAME AGE ADDRESS SALARY (USD)

1 Andy 35 Ciledug 2000.00


2 Budi 25 Jakarta Pusat 1500.00

3 Ami 23 Cipulir 2000.00


4 Mita 25 Bintaro 6500.00
5 Nani 27 Pademangan 8500.00

6 Darren 22 Kelapa gading 4500.00

7 Rina 24 Kuningan 10000.00

Sekarang kita ambil bagian subquery dengan SELECT statement untuk mengambil data
Staff berdasarkan ID dan ID itu terikat oleh salary yang lebih besar dari 4500.
CONTOH SUBQUERY (1)…

Maka query akan menjadi seperti berikut ini:


SELECT *
FROM STAFF
WHERE ID IN (SELECT ID
FROM STAFF
WHERE SALARY > 4500) ;

Hasil query :
ID NAME AGE ADDRESS SALARY
(USD)
4 Mita 25 Bintaro 6500.00
5 Nani 27 Pademangan 8500.00

7 Rina 24 Kuningan 10000.00


CONTOH SUBQUERY (2)

Menampilkan data karyawan yang memiliki jabatan sama dengan smith :

SELECT *
FROM employee
WHERE title =
(SELECT title
FROM employee
WHERE last_name = “smith”
)
CONTOH SUBQUERY (3)

Menampilkan data karyawan yang memiliki gaji dibawah rata-rata :

SELECT *
FROM employee
WHERE salary <
(SELECT AVG(salary)
FROM employee)
TABEL VIEW
PENGERTIAN TABEL VIEW

• View dapat didefinisikan sebagai table maya (virtual) atau logical yang terdiri dari
himpunan hasil query.
• Tidak seperti pada umumnya table di dalam basis data relasional, view bukanlah bagian
dari skema fisik
• View bersifat dinamis, ia mengandung data dari table yang direpresentasikannya.
• Dengan demikian, ketika table yang menjadi sumber datanya berubah, data di view juga
akan berubah.
TUJUAN VIEW

Ujuan dari pembuatan VIEW adalah untuk kenyamanan (mempermudah penulisan query),
untuk keamanan (menyembunyikan beberapa kolom yang bersifat rahasia), atau dalam
beberapa kasus bisa digunakan untuk mempercepat proses menampilkan data (terutama jika
kita akan menjalankan query tersebut secara berulang).
CARA PENGGUNAAN VIEW DALAM MYSQL

Untuk membuat View di dalam MySQL, kita tinggal menggunakan format dasar sebagai
berikut:

CREATE VIEW nama_view AS


SELECT kolom_1, kolom_2, kolom_n
FROM nama_table
WHERE kondisi;
• Sebagai contoh, misalkan ingin menampilkan nama dosen yang berdomisi di Jakarta, maka
bisa menggunakan query berikut:

SELECT NIP, nama_dosen, alamat


FROM daftar_dosen
WHERE alamat = 'Jakarta';

Misalkan query tersebut akan dijalankan setiap beberapa detik (diakses dari website yang
sibuk), pada setiap permintaan data, MySQL server harus melakukan pemrosesan untuk
mencari seluruh dosen yang memiliki alamat di Jakarta.
PEMBUATAN VIEW

Sebagai contoh kita membuat table view untuk dosen yang beralamat di Jakarta.

CREATE VIEW dosen_jakarta AS


SELECT NIP, nama_dosen, alamat
FROM
daftar_dosen
WHERE alamat = 'Jakarta';
MENGAKSES VIEW

Setelah kita membuat table view, selanjutnya kita bisa mengakses table view yang telah
dibuat sebelumnya.
Sebagai contoh untuk mengakses data yang terdapat di view dosen_jakarta, cukup
menggunakan query SELECT :

SELECT * FROM dosen_jakarta;


PRAKTIKUM
Menggunakan database classicmodels
Link : http://www.mysqltutorial.org/mysql-sample-database.aspx
AGREGASI

1. Menampilkan jumlah record pada tabel customers

SELECT COUNT(*) AS data


FROM customers

2. Menampilkan jumlah record customers dimana country USA


SELECT COUNT(*) AS data
FROM customers
WHERE country = "USA"
AGREGASI…

3. Menampilkan total creditLimit pada customers

SELECT SUM(creditLimit) AS totalCreditLimit


FROM customers

4. Menampilkan total creditLimit pada costumer dimana country = norway

SELECT SUM(creditLimit) AS totalCreditLimit


FROM customers
WHERE country = "Norway"
AGREGASI

5. Menampilkan minimum creditLimit pada table customers


SELECT MIN(creditLimit) AS
minCredit
FROM
`customers`

6. Menampilkan maximum creditLimit pada table customers

SELECT MAX(creditLimit) AS
minCredit
FROM
`customers`
SUBQUERY

1. Tampilkan data costumer yang tinggal pada country yang sama dengan JEAN

SELECT
*
FROM
`customers`
WHERE
country IN(
SELECT
country
FROM
customers
WHERE
contactFirstName = "Jean"
)
VIEW

1. Membuat table view untuk customer yang tinggal di city = Las Vegas

CREATE VIEW customersLasVegas AS


SELECT
*
FROM
customers
WHERE
city = "Las Vegas"
LATIHAN PRAKTIKUM
DIKUMPULKAN LEWAT FLASHDISK

1. Tampilkan jumlah (COUNT) data keseluruhan pada employees dengan jobtitle = Sales Rep
2. Tampilkan tampilkan jumlah (COUNT) data untuk productCode = S18_1749 pada table
orderdetails
3. Tampilkan data table employees yang memiliki officeCode sama seperti firstName = Diane
4. Tampilkan data table employees yang memiliki officeCode sama seperti firstName = William
dan Gerard
5. Buatlah table view untuk menampilkan data dengan status = shipped pada table orders
TUGAS INDIVIDU
DEADLINE : HARI MINGGU JAM 23:59 WIT

Agregasi :
1. Tampilkan jumlah (COUNT) data pada table orderdetails dengan priceEach >= 44.35
2. Tampilkan jumlah (COUNT) data pada table orderdetails dengan priceEach 44.35 – 119.67
3. Tampilkan jumlah (COUNT) data pada table orderdetails dengan priceEach <= 108.06
4. Menampilkan maximum (MAX) priceEach untuk productCode = S18_1749
5. Menampilkan maximum (MAX) priceEach untuk productCode = S18_1749 dan productCode = S24_3969
6. Menampilkan minimum (MIN) priceEach untuk productCode = S18_1749
7. Menampilkan minimum (MIN) priceEach untuk productCode = S18_1749 dan productCode = S24_3969
TUGAS INDIVIDU
DEADLINE : HARI MINGGU JAM 23:59 WIT

SUBQUERY :
1. Tampilkan data customer yang tinggal sama dengan contactFirstName adalah Peter dan Jonas
2. Tampilkan data employees yang officeCode sama dengan pada data untuk firstName adalah Mary dan Julie
3. Tampilkan data productCode yang memiliki priceEach lebih besar dari productCode = S18_4409 pada table
orderdetails
4. Tampilkan data productCode yang memiliki priceEach lebih kecil dari productCode = S10_4962 pada table
orderdetails
5. Tampilkan data pada orders yang memiliki status sama seperti pada costumerNumber = 141
6. Tampilkan data pada orders yang memiliki orderDate lewat dari tanggal tersebut pada costumerNumber =
141
TUGAS INDIVIDU
DEADLINE : HARI MINGGU JAM 23:59 WIT

View
1. Dari soal agregasi dan subquery, buatlah minimum 5 table view berdasarkan soal di atas

Anda mungkin juga menyukai