Minggu-13 DB1 (SQL-Function & Agregat) file• Fungsi agregat adalah fungsi-fungsi yang mengambil...
Transcript of Minggu-13 DB1 (SQL-Function & Agregat) file• Fungsi agregat adalah fungsi-fungsi yang mengambil...
Copyright © 2005 PENS-ITS
B a s i s D a t a - 1SQL
13C H A P T E R
SQLFunction & Agregat
Copyright © 2005 PENS-ITS
B a s i s D a t a - 1SQL
Tujuan:
Mengenal perintah SQL dalam:- Operasi Himpunan- Fungsi Agregat
Objectives
Copyright © 2005 PENS-ITS
B a s i s D a t a - 1SQL
S Q L – Operasi Himpunan
• Pada ekspresi SQL, terdapat operasi yang berhubungan denganhimpunan pada atribut yang sama.
• Operasi SQL tersebut yaitu: UNION, INTERSECT dan EXCEPT, yang masing-masing memiliki hubungan erat dengan operasialjabar relasional ∪, ∩ dan −.Contoh:
• Terdapat 2 himpunan data, yaitu semua nasabah yang memilikirekening pada suatu bank, dengan SQL:
SELECT nama_nasabahFROM penabung
• Dan himpunan semua pelanggan yang memiliki pinjaman dari suatubank, dengan SQL:
SELECT nama_nasabahFROM peminjam
Copyright © 2005 PENS-ITS
B a s i s D a t a - 1SQL
S Q L – Operasi Himpunan
Operasi UNION (Penggabungan)• Untuk menemukan semua nasabah yang memiliki pinjaman,
rekening atau keduanya pada suatu bank tertentu, dapat dituliskanquery berikut:
(SELECT nama_nasabahFROM penabung)UNION(SELECT nama_nasabahFROM peminjam)
• Operaso UNION tidak seperti pada klausa SELECT, secaraotomatis mengeliminasi duplikat record. Maka pada query diatas, jika seorang nasabah bernama ‘Mike’ yang memiliki beberaparekening atau pinjaman (atau keduanya), maka ‘Mike’ hanyamuncul sekali record data saja.
Copyright © 2005 PENS-ITS
B a s i s D a t a - 1SQL
S Q L – Operasi Himpunan
Operasi UNION (Penggabungan)• Jika ingin mempertahankan adanya duplikasi, maka dapat
digunakan operasi UNION ALL sebagai penggani UNION.(SELECT nama_nasabahFROM penabung)UNION ALL(SELECT nama_nasabahFROM peminjam)
• Dengan demikian, semua rekening dan pinjaman atas nama Mike akan muncul. Jika Mike memiliki 3 rekening dan 2 pinjaman padabank, maka akan terdapat 5 record data atas nama Mike.
Copyright © 2005 PENS-ITS
B a s i s D a t a - 1SQL
S Q L – Operasi Himpunan
Operasi INTERSECT (Irisan)• Untuk menemukan semua nasabah yang memiliki baik rekening
maupun pinjaman pada bank, maka dapat digunakan query berikut:(SELECT [Distinct] nama_nasabahFROM penabung)INTERSECT(SELECT [Distinct] nama_nasabahFROM peminjam)
• Seperti pada operasi UNION, operasi INTERSECT jugamengeliminasi adanya duplikat data.
Copyright © 2005 PENS-ITS
B a s i s D a t a - 1SQL
S Q L – Operasi Himpunan
Operasi INTERSECT (Irisan)• Jika ingin ditampilkan semua data yang memenuhi, sehingga
mempertahankan adanya duplikat data pada record-recordnya, maka dapat digunakan operasi INTERSECT ALL query berikut:
(SELECT [Distinct] nama_nasabahFROM penabung)INTERSECT ALL(SELECT [Distinct] nama_nasabahFROM peminjam)
• Jadi, jika Mike memiliki 3 rekening dan 2 pinjaman, maka data yang muncul ada 2 record.
Copyright © 2005 PENS-ITS
B a s i s D a t a - 1SQL
S Q L – Operasi Himpunan
Operasi EXCEPT (Perkecualian)• Untuk menemukan semua nasabah yang memiliki rekening tapi
tidak memiliki pinjaman pada suatu bank, maka bentuk query:(SELECT [Distinct] nama_nasabahFROM penabung)EXCEPT(SELECT [Distinct] nama_nasabahFROM peminjam)
• Seperti pada operasi UNION dan INTERSECT sebelumnya, operasi EXCEPT juga mengeliminasi adanya duplikat data.
• Pada query diatas, nasabah dengan nama Mike akan muncul sekalijika Mike hanya memiliki rekening di bank saja dan tidak memilikipinjaman.
Copyright © 2005 PENS-ITS
B a s i s D a t a - 1SQL
S Q L – Operasi Himpunan
Operasi EXCEPT (Perkecualian)• Jika ingin mempertahankan adanya duplikasi data, maka dapat
digunakan operasi EXCEPT ALL dengan bentuk query:(SELECT [Distinct] nama_nasabahFROM penabung)EXCEPT ALL(SELECT [Distinct] nama_nasabahFROM peminjam)
• Dengan query diatas, jika Mike memiliki 3 rekening dan 1 pinjaman, maka akan dihasilkan 2 record data saja.
• Sebaliknya, jika Mike memiliki r rekening dan 3 pinjaman, makatidak akan dihasilkan data record (kosong).
Copyright © 2005 PENS-ITS
B a s i s D a t a - 1SQL
S Q L – Fungsi Agregat dan Group Function
• Fungsi agregat adalah fungsi-fungsi yang mengambil kumpulan(collection) suatu himpunan data atau beberapa himpunan data danmengembalikan suatu nilai tunggal.
• Terdapat 5 fungsi agregasi (agregat) baku, yaitu:1. AVG 2. COUNT 3. MAX4. MIN 5. SUM
• Contoh:The maximum salary in
the EMPLOYEEStable.
…
Copyright © 2005 PENS-ITS
B a s i s D a t a - 1SQL
S Q L – Fungsi Agregat dan Group Function
• Syntax dari Group Function, yaitu:
SELECT [column,] group_function(column), ...FROM table[WHERE condition][GROUP BY column][ORDER BY column];
Copyright © 2005 PENS-ITS
B a s i s D a t a - 1SQL
S Q L – Fungsi Agregat dan Group Function
Fungsi AVG dan SUM• Fungsi AVG digunakan untuk mencari nilai rata-rata pada suatu
kolom data.• Fungsi SUM digunakan untuk mencari nilai jumlah total pada suatu
kolom
SELECT AVG(salary), MAX(salary),MIN(salary), SUM(salary)
FROM employeesWHERE job_id LIKE '%REP%';
Copyright © 2005 PENS-ITS
B a s i s D a t a - 1SQL
S Q L – Fungsi Agregat dan Group Function
Fungsi MIN dan MAX• Fungsi MIN digunakan untuk mencari nilai data paling kecil
(minimum).• Fungsi MAX digunakan untuk mencari nilai data paling besar
(Maximum).
SELECT MIN(hire_date), MAX(hire_date)FROM employees;
Copyright © 2005 PENS-ITS
B a s i s D a t a - 1SQL
S Q L – Fungsi Agregat dan Group Function
Fungsi COUNT• Fungsi COUNT digunakan untuk mencari jumlah record data row
(jumlah baris data yang dihasilkan dari query/banyaknya data).
SELECT COUNT(*)FROM employeesWHERE department_id = 50;
Copyright © 2005 PENS-ITS
B a s i s D a t a - 1SQL
S Q L – Fungsi Agregat dan Group Function
Fungsi COUNT• Fungsi COUNT mengabaikan adanya data yang sifatnya NULL
VALUE.• Contoh berikut menampilkan jumlah data record pada suatu kolom.
SELECT COUNT(commission_pct)FROM employeesWHERE department_id = 80;
Copyright © 2005 PENS-ITS
B a s i s D a t a - 1SQL
S Q L – Fungsi Agregat dan Group Function
Membuat Group Data• Ada keadaan penggunaan fungsi agregat untuk menghasilkan
beberapa record data sekaligus berdasarkan kondisi khusus ataugroup dari suatu kolom tertentu.
• Maka dapat digunakan klausa GROUP BY.
SELECT column, group_function(column)FROM table[WHERE condition][GROUP BY group_by_expression][ORDER BY column];
• Membagi rows (baris-baris) dalam tabel menjadi group-group data yang lebih kecil dengan klausa GROUP BY.
Copyright © 2005 PENS-ITS
B a s i s D a t a - 1SQL
S Q L – Fungsi Agregat dan Group Function
Membuat Group Data
EMPLOYEES
The averagesalary
in EMPLOYEES
table for each
department.
4400
…
9500
3500
6400
10033
Copyright © 2005 PENS-ITS
B a s i s D a t a - 1SQL
S Q L – Fungsi Agregat dan Group Function
Membuat Group Data
SELECT department_id, AVG(salary)FROM employeesGROUP BY department_id ;
Copyright © 2005 PENS-ITS
B a s i s D a t a - 1SQL
S Q L – Fungsi Agregat dan Group Function
Membuat Group Data
SELECT AVG(salary)FROM employeesGROUP BY department_id ;
Copyright © 2005 PENS-ITS
B a s i s D a t a - 1SQL
S Q L – Fungsi Agregat dan Group Function
Membuat Group DataGrouping by More Than One Column
EMPLOYEES
“Add up the salaries in
the EMPLOYEEStable
for each job, grouped by department.
…
Copyright © 2005 PENS-ITS
B a s i s D a t a - 1SQL
S Q L – Fungsi Agregat dan Group Function
Membuat Group DataUsing the GROUP BY Clause on Multiple Columns
SELECT department_id dept_id, job_id, SUM(salary)FROM employeesGROUP BY department_id, job_id ;
Copyright © 2005 PENS-ITS
B a s i s D a t a - 1SQL
S Q L – Fungsi Agregat dan Group Function
Membuat Pembatasan Group Data• Fungsi GROUP BY dapat dibuat pembatasan dari data yang akan
dihasilkan dengan menggunakan fungsi HAVING.
Dengan klausa HAVING dapat membatasi groups data:1. Rows (baris-baris) akan di group.2. Fungsi group dapat diaplikasikan.3. Groups matching the HAVING clause are displayed.
SELECT column, group_functionFROM table[WHERE condition][GROUP BY group_by_expression][HAVING group_condition][ORDER BY column];
Copyright © 2005 PENS-ITS
B a s i s D a t a - 1SQL
S Q L – Fungsi Agregat dan Group Function
Membuat Pembatasan Group Data
The maximumsalary
per departmentwhen it is
greater than$10,000
EMPLOYEES
…
Copyright © 2005 PENS-ITS
B a s i s D a t a - 1SQL
S Q L – Fungsi Agregat dan Group Function
Membuat Pembatasan Group Data
SELECT department_id, MAX(salary)FROM employeesGROUP BY department_idHAVING MAX(salary)>10000 ;
Copyright © 2005 PENS-ITS
B a s i s D a t a - 1SQL
S Q L – Fungsi Agregat dan Group Function
Membuat Pembatasan Group Data
SELECT job_id, SUM(salary) PAYROLLFROM employeesWHERE job_id NOT LIKE '%REP%'GROUP BY job_idHAVING SUM(salary) > 13000ORDER BY SUM(salary);
Copyright © 2005 PENS-ITS
B a s i s D a t a - 1SQL
S Q L – Fungsi Agregat dan Group Function
Membuat Pembatasan Group Data
Nesting Group Functions
Display the maximum average salary. SELECT MAX(AVG(salary))FROM employeesGROUP BY department_id;