Fungsi Agregasi dan View
AGREGASI SQL DAN VIEW
Dasar Teori
FUNCTION
Function atau
fungsi dalam perintah SQL digunakan untuk menghasilkan sebuah nilai atau
output. Ada berbagai macam fungsi yang ada pada SQL.
Fungsi
Agregasi/Agregates
Fungsi yang dihasilkan dari sebuah group data.
Fungsi yang dihasilkan dari sebuah group data.
1.
SUM : Untuk menjumlah suatu kolom tertentu yang telah
definisikan dalam perintah select.
Sintak : SELECT SUM (nama_kolom)
FROM nama_tabel
Ex: SELECT SUM (SKS) FROM Mata_Kuliah
Ex: SELECT SUM (SKS) FROM Mata_Kuliah
2.
COUNT : Untuk menghitung jumlah baris yang telah
diinputkan dalam sebuah tabel
Sintak
: SELECT COUNT (nama_kolom) FROM nama_tabel
SELECT
COUNT (SKS) FROM Mata_Kuliah
3.
AVG : Untuk menghitung nilai rata – rata dari suatu
kolom tertentu yang telah definisikan dalam perintah select
Sintak
: SELECT AVG (nama_kolom) FROM nama_tabel
Ex:
SELECT AVG (SKS) FROM Mata_Kuliah
4.
MIN : Untuk mengetahui nilai terkecil dari sebuah
kolom tertentu dalam perintah select
Sintak
: SELECT MIN (nama_kolom) FROM nama_tabel
Ex: SELECT MIN (SKS) FROM Mata_Kuliah
5.
MAX : Untuk mengetahui nilai terbesar dari sebuah
kolom tertentu dalam perintah select
Sintak
: SELECT MAX (nama_kolom) FROM nama_tabel
Ex:
SELECT MAX (SKS) FROM Mata_Kuliah
Group By
-
Modifier Group By
Klausa group by yang diikuti oleh modefier with rollup
menyebabkan tambahan baris pada hasil keluaran.
Ex:
Buat tabel bernama penjualan yang mempunyai
kolom-kolom berupa tahun, negara, produk, dan profit berdasarkan data hasil
penjualan.
Tabel bisa ditampilkan menurut tahun dengan perintah
group by sederhana seperti berikut ini:
Select year, sum (profit) from penjualan group by
tahun;
Anda dapat menggunakan rollup yang menganalisis data pada
kolom tersebut dengan hanya menggunakan sebuah query. Dengan penambahan
perintah rollup, baris tabel akan bertambah dengan jumlah total dari profit
penjualan.
-
Group by menggunakan field tersembunyi
Mysql menambah penggunaan group by sehingga anda dapat
menggunakan kolom atau perhitungan dari daftar select yang tidak tampak pada
klausa group by. Hal ini berlaku untuk nilai yang mungkin untuk group ini. Anda
dapat menggunakan perintah ini untuk meningkatkan performance dengan
menghindari sorting dan grouping dari data-data yang tidak diperlukan.
Ex:
Anda tidak
perlu mengelompokkan pelanggan.nama pada query dibawah ini:
Mysql> SELECT order.custid, customer.name, MAX(payments)
è FROM order, customer
è WHERE order.custid=customer.custid
è GROUP BY order.custid;
Having
Memiliki
klausa digunakan untuk menyaring data berdasarkan fungsi kelompok. Hal ini
mirip dengan kondisi WHERE tapi digunakan dengan fungsi kelompok. Fungsi
kelompok tidak dapat digunakan dalam MANA Klausul tetapi dapat digunakan dalam
klausa HAVING.
Ex :
Jika Anda
ingin memilih departemen yang jumlah gaji yang dibayarkan untuk karyawan lebih
dari 25000, query sql akan seperti;
SELECT dept, SUM (salary)
FROM employee
GROUP BY dept
HAVING SUM (salary) > 25000
FROM employee
GROUP BY dept
HAVING SUM (salary) > 25000
Outputnya
akan seperti:
GAMBAR
Ketika GROUP
BY dan HAVING klausa digunakan bersama-sama dalam sebuah pernyataan SELECT,
klausa WHERE diproses terlebih dahulu, kemudian baris yang dikembalikan setelah
klausa WHERE dijalankan dikelompokkan berdasarkan klausa GROUP BY.
Akhirnya,
kondisi pada fungsi kelompok dalam klausa HAVING diterapkan pada baris
dikelompokkan sebelum hasil akhir akan ditampilkan.
Case
Perintah CASE sering digunakan untuk menampilkan nilai tertentu dari beberapa barisan data dengan syarat-syarat atau kondisi yang kita berikan.
Kalau kita belajar bahasa pemrograman tentu kita kenal dengan perintah IF Condition, fungsinya CASE hampir sama. Bedanya perintah CASE digunakan untuk beberapa kondisi sekaligus, dan didalam SQL perintah CASE tidak bisa berdiri sendiri melainkan harus disisipkan dalam perintah SELECT. Jadi berbeda dengan perintah IF yang lebih bebas, akan tetapi perintah IF hanya berguna apabila dimasukan dalam STORE PROCEDURE, FUNCTION dan TRIGGER. Perbedaannya dalam SQL sangat jelas sekali, karena perintah CASE disisipkan dalam perintah SELECT jadi yang dihasilkan langsung berupa DATASET dan langsung bisa dilihat hasilnya.
Perintah CASE ini mempunyai dua format :
1. Simple Case function :
Maksudnya adalah perintah CASE sederhana.
Bentuk Sintaknya
CASE input_expression
WHEN when_expression THEN result_expression
[ ...n ]
[
ELSE else_result_expression
]
END
2. Searched CASE function:
Maksudnya perintah CASE ini diikuti dengan syarat kondisi boolean, seperti >, <, >=, <= , dan lain-lain.
Sintaknya sebagai berikut.
CASE
WHEN Boolean_expression THEN result_expression
[ ...n ]
[
ELSE else_result_expression
]
END
Case
Perintah CASE sering digunakan untuk menampilkan nilai tertentu dari beberapa barisan data dengan syarat-syarat atau kondisi yang kita berikan.
Kalau kita belajar bahasa pemrograman tentu kita kenal dengan perintah IF Condition, fungsinya CASE hampir sama. Bedanya perintah CASE digunakan untuk beberapa kondisi sekaligus, dan didalam SQL perintah CASE tidak bisa berdiri sendiri melainkan harus disisipkan dalam perintah SELECT. Jadi berbeda dengan perintah IF yang lebih bebas, akan tetapi perintah IF hanya berguna apabila dimasukan dalam STORE PROCEDURE, FUNCTION dan TRIGGER. Perbedaannya dalam SQL sangat jelas sekali, karena perintah CASE disisipkan dalam perintah SELECT jadi yang dihasilkan langsung berupa DATASET dan langsung bisa dilihat hasilnya.
Perintah CASE ini mempunyai dua format :
1. Simple Case function :
Maksudnya adalah perintah CASE sederhana.
Bentuk Sintaknya
CASE input_expression
WHEN when_expression THEN result_expression
[ ...n ]
[
ELSE else_result_expression
]
END
2. Searched CASE function:
Maksudnya perintah CASE ini diikuti dengan syarat kondisi boolean, seperti >, <, >=, <= , dan lain-lain.
Sintaknya sebagai berikut.
CASE
WHEN Boolean_expression THEN result_expression
[ ...n ]
[
ELSE else_result_expression
]
END
View
SQL View
adalah tabel virtual (bukan tabel sebenarnya) yang dibuat dari beberapa tabel
atau view lain. SQL View tidak memiliki data sendiri, tetapi data-datanya
berasal dari tabel-tabel atau view lain. SQL View dibuat atau dibangun dengan
SELECT statement. Di dalam query SELECT tersebut kita bias menambahkan ORDER BY
statement untuk mengurutkan data atau tidak sama sekali. SQL View dapat
digunakan untuk memudahkan atau menyederhanakan data yang ditampilkan,
mencegah menampilkan data yang penting dengan menyembunyikan nama kolomnya.
- Kegunaan VIEW :
- Kegunaan VIEW :
- Menyembunyikan Kolom atau Baris
- Menampilkan hasil dari penghitungan
- Menyembunyikan Sintak SQL yang rumit
- Fungsi Built-in Layer
- Menyediakan level isolasi antara data tabel dan View data pengguna
- Memberikan proses permission yang berbeda untuk view yang berbeda dari tabel yang sama
- Memberikan trigger berbeda pada view yang berbeda dari tabel yang sama
- Membuat VIEW
Ex :
CREATE VIEW CustomerNameView AS
SELECT [Name] AS CustomerName
FROM CUSTOMER;
CREATE VIEW CustomerNameView AS
SELECT [Name] AS CustomerName
FROM CUSTOMER;
Menggunakan
VIEW :
SELECT *
FROM CustomerNameView
FROM CustomerNameView
CREATE VIEW
[nama_view] AS
[select_statement]
[select_statement]
VIEW untuk hide
column/row
Contoh, misalkan pengguna aplikasi View Ridge ingin menyederhanakan daftar customer, sehingga yang tampil hanya nama dan nomor telepon saja.
Contoh, misalkan pengguna aplikasi View Ridge ingin menyederhanakan daftar customer, sehingga yang tampil hanya nama dan nomor telepon saja.
CREATE VIEW
BasicCustomerData AS
SELECT[Name], AreaCode, PhoneNumber
FROM CUSTOMER;
SELECT[Name], AreaCode, PhoneNumber
FROM CUSTOMER;
Contoh lain,
jika pihak manajemen ingin menyembunyikan kolom AcquisitionPrice dan
SalesPrice, maka dapat membuat view dengan tanpa mengikutsertakan kolom-kolom
tersebut.
View juga dapat
digunakan untuk menyembunyikan baris data tertentu. Yaitu dengan menambahkan
klausa WHERE pada query-nya.
- VIEW untuk
SQL yang complex
Dengan menggunakan views, programmer (developer) tidak perlu memasukan SQL statement yang kompleks ketika mereka membutuhkan suatu data.
Misalkan view berikut menghasilkan data ketertarikan customer terhadap artist yang ada.
Dengan menggunakan views, programmer (developer) tidak perlu memasukan SQL statement yang kompleks ketika mereka membutuhkan suatu data.
Misalkan view berikut menghasilkan data ketertarikan customer terhadap artist yang ada.
CREATE VIEW
CustomerInterests AS
SELECTC.Name as Customer, A.Name as Artist
FROM CUSTOMER C
JOIN CUSTOMER_ARTIST_INT CI
ON C.CustomerID = CI.CustomerID
JOIN ARTIST A
ON CI.ArtistID = A.ArtistID;
SELECTC.Name as Customer, A.Name as Artist
FROM CUSTOMER C
JOIN CUSTOMER_ARTIST_INT CI
ON C.CustomerID = CI.CustomerID
JOIN ARTIST A
ON CI.ArtistID = A.ArtistID;
- Mengubah VIEW
Ex :
ALTER VIEW
CustomerNameView AS
SELECT [Name]
AS NamaPelanggan
FROM CUSTOMER;
ALTER VIEW [nama_view]
AS
[select_statement]
- Menghapus
VIEW
Ex :
DROP VIEW
CustomerNameView;
DROP VIEW
[nama_view]
Persiapan : Buatlah tabel yang berisi field-field seperti dibawah ini.berikut prtsc dari perintah soal diatas:
Soal Praktikum (Penyelesaian menggunakan DBMS PostgreSQL)
1. Dari tabel
mahasiswa yang telah dibuat tambahkan 3 data lagi, tambahkan kolom gender
kemudian update datanya dan tampilkan banyaknya data mahasiswa yang telah
diinputkan. Kemudian cari nim mahasiswa yang paling kecil, yang paling besar,
dan rata-ratanya.
^-^pertama-tama yang perlu dilakukan adalah menginsertkan data pada tabel fakultas.
^-^setelah tabel fakultas kelar, dilanjut insert data pada tabel mahasiswa.
^-^lalu menambahkan kolom gender pada tabel mahasiswa dan meng_update datanya dengan menambahkan gender pada tiap-tiap nama mahasiswa.
^-^setelah semua data ter_update, kita bisa menampilkan jumlah baris yang telah diinputkan seperti sintak pada gambar dibawah ini:
^-^menampilkan nim mahasiswa terendah dengan sintak seperti dibawah ini:
^-^menampilkan nim mahasiswa tertinggi dengan sintak seperti dibawah ini:
^-^menampilkan rata-rata dari nim mahasiswa dengan sintak seperti dibawah ini:
2. Tampilkan rata-rata
nim mahasiswa yang data nimnya lebih besar dari 12.
^-^ menampilkan rata-rata dari nim mahasiswa yang lebih besar dari 12 dengan menggunakan agregasi AVG
3. Tampilkan jumlah
mahasiswa berdasarkan fakultas.
4. Tampilkan seperti
nomor 3 dengan persyaratan jumlah mahasiswa yang lebih dari sama dengan dua
saja yang ditampilkan.
^-^ menampilkan jumlah mahasiswa berdasarkan tabel fakultas tetapi yang jumlahnya lebih dari sama dengan 2 dengan menggunakan fungsi HAVING.
5. Tampilkan data
mahasiswa dengan persyaratan, jika jenis kelamininnya “L” maka tertulis
laki-laki dan bila “P” maka tertulis perempuan.
^-^menampilkan data mahasiswa yang pada kolom gendernya menggunakan "Laki-Laki" untuk "l" dan "Perempuan" untuk "p". Fungsi yang digunakan adalah fungsi CASE.
opsi jawaban kedua untuk perintah soal diatas.
6. Buatlah view
untuk query penampilan data mahasiswa, fakultas. Ambil berdasarkan nim, nama
mahasiswa, dan nama fakultas.
^-^membuat view table yang terdiri dari field nim mahasiswa, nama mahasiswa, dan nama fakultas.
Tugas Rumah
Buat laporan praktikum menggunakan DBMS mysql untuk
mengerjakan tugas praktikum 1-5 dan letakkan di blog.
^-^ membuat table fakultas dan mahasiswa pada DBMS MySQL.
^-^ menginsertkan data kedalam kedua tabel tersebut bedasarkan perintah soal diatas.
^-^ menambahkan kolom gender pada tabel mahasiswa.
^-^ menghitung jumlah baris yang telah diinputkan kedalam tabel mahasiswa.
^-^ mencari nilai NIM mahasiswa terkecil dari data dalam tabel mahasiswa.
^-^ mencari nilai NIM mahasiswa terbesar dari data dalam tabel mahasiswa.
^-^ mencari nilai rata-rata NIM mahasiswa dari data dalam tabel mahasiswa.
^-^ mencari nilai rata-rata NIM mahasiswa dari data dalam tabel mahasiswa yang lebih dari 12.
^-^ menampilkan jumlah mahasiswa yang berada pada tiap-tiap nama fakultas yang ditinjau berdasarkan tabel fakultas.
^-^ menampilkan jumlah mahasiswa yang berada pada tiap-tiap nama fakultas yang ditinjau berdasarkan tabel fakultas yang jumlah@fakultasnya lebih dari sama dengan 2 mahasiswa.
^-^ menampilkan pada kolom gender mahasiswa "Laki-lai" untuk gender "l" dan "Perempuan" untuk mahasiswa yang bergender "p". ada beberapa opsi jawaban yang dapat saya tampilkan dari perintah ini, diantaranya:
opsi pertama : menampilkan semua data mahasiswa dengan mengunakan "select *" sehingga field gender yang masih berupa l dan p tetap ada di dalam tabel.
opsi kedua : menampilkan semua data didalam tabel mahasiswa dengan menyebutkan field-field yang ada di dalam tabel mahasiswa satu persatu tanpa menyebutkan field gender sehingga akan menghasilkan tampilan data mahasiswa yang pada kolom gendernya sudah berganti menjadi "Laki-laki" untuk "l" dan "Perempuan" untuk "p".
2.
opsi ketiga : menampilkan data mahasiswa yang terdiri dari nim mahasiswa, nama mahasiswa, alamat mahasiswa, nama fakultas dan gender. di dalam sintaknya saya menggunakan relasi antara tabel mahasiswa dan fakultas.
^-^ membuat tabel view yang terdiri dari nim mahasiswa, nama mahasiswa dan nama fakultas.
Evaluasi perbedaan kelebihan dan kemudahan dari kedua
DBMS.
Evaluasi Perbedaan MySQL dan PostgreSQLPada dasarnya tidak ada perbedaan yang yang besar pada query-query agregasi, group by, having, case, maupun view. Perbedaannya hanya saja terletak pada pemberian spasi pada syntax di PostgreSQL dan MySQL. Pada MySQL pemberian spasi sangat berpengaruh, sedangkan pada PostgreSQL tidak memiliki pengaruh apapun.
Untuk lebih meyakinkan, perhatikan gambar dibawah ini.
Fungsi Agregasi COUNT pada PostgreSQL
Fungsi Agregasi COUNT pada MySQL
dan untuk lebih rinci nya silahkan perhatikan tabel dibawah ini.
selain perbedaan-perbedaan diatas, terdapat satu lagi perbedaan..
yaitu pada tampilan data saat tampilan view tabel mahasiswa. berikut perbedaannya:
pada PostgreSQL : nim mahasiswa tidak secara otomatis terurut.
pada MySQL : nim mahasiswa tidak secara otomatis terurut
Kesimpulan
Dari
kegiatan menyelesaikan perintah-perintah diatas dapat disimpulkan:
·
Agregasi
adalah fungsi yang dihasilkan dari sebuah kelompok data. Agregasi meliputi
min(terkecil), max(terbesar), avg(rata-rata), sum(jumlah perhitungan dari suatu
kolom), dan Count(mencari jumlah baris yang telah diinputkan).
·
Group by
adalah fungsi yang digunakan untuk pengelompokkan perintah select. Biasanya
group by membantu/ bekerja sama dengan fungsi agregate untuk menampilkan suatu
data.
·
Having
dipakai terkait dengan group by khususnya dalam menentukan kondisi bagi group
by.
·
Case dalam
prosesnya dapat dengan bebas mengontrol data yang kembali dari query. Biasanya
digunakan untuk penggantian isi data sesuai dengan kondisi yang ada. Seperti
penggantian data “l” menjadi “Laki-laki” pada kolom gender pada tabel
mahasiswa.
·
View,
kembarannya temporary table. Hanya saja kalau view tetap tersimpan di dalam
database. Sedangkan temporary, tabel yang telah dibuat akan otomatis hilang
ketika DBMS nya ditutup.
·
Kesimpulan
dari evaluasi kedua DBMS terletak pada kesensitifin pemberian spasi pada sintax
yang ada pada fungsi agegate.
Saran bagi
pembaca:
dimohon
ketika pembaca menemukan sintax yang kurang tepat, agar menuliskan
komentar di
bawah postingan ini disertai dengan bagian sintak yang salah dan juga
pembetulannya,
ini supaya antara pemosting dan pembaca sama-sama dapat belajar dan
berbagi
ilmu.. thanks.
Daftar
Pustaka
Wahana, komputer. 2006. Pengolahan Database dengan MySQL. Yogyakarta
: ANDI.
Raghu Ramakrishnan, "Database Manajament System" (E-Book)
http://mysql.phi-integration.com/
http://beginner-sql-tutorial.com/id/sql-having-clause.htm
Komentar
Posting Komentar