Semoga laporan ini bermanfaat bagi siapa saja yang membacanya
LAPORAN
PRAKTIKUM DESAIN BASIS DATA V AGREGASI SQL DAN VIEW
1.
Bahasan
-
Agregasi sql yang diperlukan dalam
perhitungan data
-
View yang merupakan table bayangan yang
berisi query baik dari satu table atau berbagi table
2.
Tujuan
-
Memahami operator agregasi sql sehingga
mempermudah dalam hal perhitungan data
-
Memahami cara penggunaan view
3.
Landasan
teori
Agregate Function
Selain dari pengolahan record-record, SQL juga
menyediakan fungsi-fungsi agregate dalam SQL adalah untuk menghitung hasil
tampilan. Karena ia sifatnya adalah untuk di tampilkan maka fungsi
tersebut tergolong dalam bagian sintak select. Beberapa jenis fungsinya
antara lain :
Nama fungsi
|
Fungsi
|
sum()
|
Menghitung jumlah ekspresi
numerik
|
avg()
|
Menghitung rata-rata ekspresi
numerik
|
min()
|
Menghitung angka minimal ekspresi
numerik
|
max()
|
Menghitung angka maksimal
ekspresi numeric
|
count()
|
Menghitung jumlah non-null
ekspresi
|
count(*)
|
Menghitung jumlah baris
|
Untuk lebih jelas, perhatikan gambar berikut :
Dari table di atas, perhatikan pada kolom telepon dan umur, karena kedua kolom tersebut yang memiliki value aritmatika.
Perhatikan sintak dasar dari function aggregate di bawah ini :
mysql>select aggregate_function(nama_field) from nama_table;
contoh 1:
select sum(umur) from data;
Dari table di atas, perhatikan pada kolom telepon dan umur, karena kedua kolom tersebut yang memiliki value aritmatika.
Perhatikan sintak dasar dari function aggregate di bawah ini :
mysql>select aggregate_function(nama_field) from nama_table;
contoh 1:
select sum(umur) from data;
Sub
Agregate Dengan Group By
Fungsi
Group By adalah untuk menyatukan antara beberapa field dalam sebuah table di
mana salah satu field atau lebih menggunakan agregate function. Misalnya, jika
kita ingin menampilkan nama dengan rata-rata umur setiap pelajar maka kita
harus menggunakan sintak :
mysql>select field1, aggregate_function(field2) from nama_table order by field1;
contoh :
select alamat, avg(umur) from data group by alamat;
mysql>select field1, aggregate_function(field2) from nama_table order by field1;
contoh :
select alamat, avg(umur) from data group by alamat;
Menyaring Hasil Agregate Function (HAVING)
Untuk menyaring tampilan setelah dilakukan fungsi agregate, maka harus menggunakan keyword having. Misalnya untuk menyaring pelajar dengan umur di bawah 19 tahun, maka sintaknya adalah :
mysql>select field1, aggregate_function(field2) from nama_table group by field1 having agragate_function(field2) operator_perbandingan valuefield;
contoh :
select alamat, avg (umur) from data group by alamat having avg(umur) >20;
Untuk menyaring tampilan setelah dilakukan fungsi agregate, maka harus menggunakan keyword having. Misalnya untuk menyaring pelajar dengan umur di bawah 19 tahun, maka sintaknya adalah :
mysql>select field1, aggregate_function(field2) from nama_table group by field1 having agragate_function(field2) operator_perbandingan valuefield;
contoh :
select alamat, avg (umur) from data group by alamat having avg(umur) >20;
CASE
Di
MySQL, pernyataan CASE digunakan untuk menerapkan bersyarat membangun kompleks
dalam program disimpan.
Syntax
CASE value WHEN [compare_value] THEN result
[WHEN [compare_value] THEN result ...]
[ELSE result]
OR
CASE WHEN [condition] THEN result
[WHEN [condition]
THEN result ...]
[ELSE result]
Sintaks pertama kembali hasil mana
nilai = compare_value.
Sintaks kedua kembali hasil untuk
kondisi pertama yang benar.
Daftar sesuai pernyataan SQL akan
mengeksekusi ketika mengevaluasi kondisi pencarian ke true.
Daftar pernyataan dalam bagian ELSE
akan mengeksekusi bila ada kondisi pencarian sesuai.
Jika tidak ada nilai pencocokan yang
ditemukan di bagian ELSE, NULL akan dikembalikan.
Setiap pernyataan daftar dapat
berisi satu atau lebih pernyataan dan daftar kosong pernyataan tidak
diperbolehkan.
Jenis kembali ekspresi kasus
kompatibel jenis gabungan semua kembali nilai-nilai dan tergantung pada konteks
di mana ia digunakan. Jika digunakan dalam konteks numerik, hasilnya
dikembalikan sebagai desimal, nyata atau integer nilai. Jika digunakan dalam
konteks string, hasilnya dikembalikan sebagai string.
Catatan: Sintaks ekspresi kasus yang
ditunjukkan di sini berbeda sedikit dari pernyataan SQL kasus, kasus sintaks,
untuk digunakan dalam program disimpan. Pernyataan kasus tidak memiliki klausul
lain NULL, dan ditutup dengan akhir kasus bukan akhir.
VIEW
VIEW adalah suatu relasi virtual yang tidak perlu ada database
tetapi dapat diproduksi oleh pemakai tertentu, pada ketika permintaan
Contoh
CREATE VIEW SalePerOrder
AS
SELECT orderNumber,
SUM (quantityOrdered * priceEach)
total
FROM orderDetails
GROUP by orderNumber
ORDER BY total DESC
4.
Hasil
Praktikum
Langsung saja, saya
mencoba menjawab soal nomer 1
1.
Dari tabel mahasiswa yang telah
dibuat tambahkan 3 data lagi , tambahkan kolom gender kemudian update datanya
dan tampilkan banyaknya data mahasiswa yang telah di inputkan. Kemudian cari
nim atau id mahasiswa yang paling kecil, paling besar dan rata-ratanya.
Karena pada praktikum kemarin sudah
menambahkan kolom gender dan mengupdate data-data yang telah ada, maka saya
tidak akan mengulanginya lagi. Silahkan kunjungi laporan sebelumnya.
Kemudian untuk menampilkan
banyaknya data mahasiswa yag telah diinputkan maka dapat melakukan query
sebagai berikut
Select count(*) from nama_tabel;
Jadi tuliskan sintaks berikut untuk
no.1 berdasarkan aturan sintaks diatas:
Select count(*) from mahasiswa;
kemudian, untuk soal mencari nilai terbesar
dapat melakukan query berikut
Select max(nama_kolom) from
nama_tabel;
Jadi kalo soalnya mencari nim
terbesar, berdasarkan sintaks diatas, dapat dituliskan sintaks berikut
Select max(nim_mah) from mahasiswa;
Seperti gambar berikut:
Select min(nama_kolom) from nama_tabel;
Dan hasilnya jika diimplementasikan ke soal, maka menjadi seperti berikut:
Select min(nama_kolom) from
nama_tabel;
Select avg(nama_kolom) from
nama_tabel;
Jadi, dapat menjawab soal
berdasarkan sintaks diatas
Select avg(nim_mah) from mahasiswa;
2.
Tampilkan rata-rata id atau nim mahasiswa
yang data nimnya lebih dari 12.
Untuk menjawab soal
Untuk menjawab soal no 2, kita dapat menggunakan query mencari
rata-rata pada nomer 1, akan tetapi hanya perlu ditambahkan perintah AND
Maka, berikut hasilnya
3.
Tampilkan jumlah mahasiswa berdasarkan
fakultas. Sehingga hasilnya seperti berikut:
Nama
fakultas
|
Count(*)
|
Saintek
|
2
|
Psikologi
|
1
|
Untuk menjawab soal ini, cek dulu
data mahasiswa yang telah diinputkan, agar kita tahu bahwa query selanjutnya
benar.
Data semua mahasiswa
Kemudian, berikut adalah query
untuk menampilkan jumlah mahasiswa yang ada di fakultas masing-masing
4.
Tampilkan seperti nomor 3 dengan persyaratan
jumlah mahasiswa yang lebih dari sama dengan 2 saja yang ditampilkan.
Untuk menjawab soal no.4, maka
query yang dipakai seperti no.3. tetapi terdapat penambahan HAVING COUNT, yaitu
untuk persyaratan dengan kondisi nim_mah tersebut memiliki banyak perhitungan
yang dinginkan
Jika ingin ditambah dengan kondisi
gender L/P, maka sintaksnya sebagai berikut
5.
Tampilkan data mahasiswa dengan persyaratan,
jika jenis kelaminnya “L” maka tertulis laki-laki dan bila “P” maka tertulis
perempuan.
Untuk menjawab soal nomer 5,
berikut adalah query nya
6.
Buatlah view untuk query penampilan data
mahasiswa, fakultas. Ambil berdasarkan nim, nama mahasiswa, nama fakultas.
Untuk menjawab no.6, maka kita
membuat view nya terlebih dahulu, seperti sintaks dibawah ini
Kemudian tampilkan view yang telah
dibuat, maka hanya menggunakan sintaks untuk menampilkan table seperti biasanya
EVALUASI PERBANDINGAN 2 DBMS
Perintah
|
MySQL
|
PostgreSQL
|
Keterangan
|
Menampilkan banyaknya data yang telah diinputkan
|
Select
count(*) from mahasiswa;
|
Select
count(*) from mahasiswa;
|
sama
|
Mencari nim terkecil
|
Select min(nim_mah) from mahasiswa;
|
Select min (nim_mah) from mahasiswa;
|
Perbedaan berada di spasi setelah min
|
Mencari nim terbesar
|
select max(nim_mah) from mahasiswa;
|
select max (nim_mah) from mahasiswa;
|
Perbedaan berada di spasi setelah max
|
Mencari rata-rata
|
select avg(nim_mah) from mahasiswa;
|
select avg (nim_mah) from mahasiswa;
|
Perbedaan berada di spasi setelah avg
|
Mencari rata-rata dengan kondisi
|
select avg (nim_mah) from mahasiswa where nim_mah>=18;
|
select avg(nim_mah) from mahasiswa where nim_mah>=18;
|
Perbedaan berada di spasi setelah avg
|
Menampilkan banyak data mahasiswa sesuai fakultas
|
select nama_fak, count(*) from fakultas, mahasiswa where
fakulta
s.id_fak=mahasiswa.id_fak group by nama_fak;
|
select nama_fak, count(*) from fakultas, mahasiswa where
fakulta
s.id_fak=mahasiswa.id_fak group by nama_fak;
|
sama
|
Menampilkan data mahasiswa sesuai fakultas dengan kondisi
gender
|
select nama_fak, count(*) from fakultas, mahasiswa where
fakulta
s.id_fak=mahasiswa.id_fak and gender='L' group by nama_fak;
|
select nama_fak, count(*) from fakultas, mahasiswa where
fakulta
s.id_fak=mahasiswa.id_fak and gender='L' group by nama_fak;
|
sama
|
Menampilkan banyaknya data mahasiswa yang lebih dari 2 atau
sama dengan 2 bila dikelompokkan sesuai fakultas
|
select nama_fak, count(*) from fakultas, mahasiswa where
fakulta
s.id_fak=mahasiswa.id_fak and gender='P' group by nama_fak
having count(nim_mah)
>=2;
|
select nama_fak, count(*) from fakultas, mahasiswa where
fakulta
s.id_fak=mahasiswa.id_fak and gender='P' group by nama_fak
having count(nim_mah)
>=2;
|
sama
|
Menampilkan data mahasiswa dengan persyaratan jika L menjadi
laki-laki dan p menjadi perempuan
|
select nim_mah, nama_mah, alamat_mah, no_tlp, case when
gender='
P' then 'laki-laki' else 'perempuan' end as jenis_kelamin
from mahasiswa;
|
select nim_mah, nama_mah, alamat_mah, no_tlp, case when
gender='
P' then 'laki-laki' else 'perempuan' end as jenis_kelamin
from mahasiswa;
|
sama
|
Membuat view
|
create view mahasiswa2 as select nim_mah, nama_mah, nama_fak
fro
m mahasiswa, fakultas where
mahasiswa.id_fak=fakultas.id_fak;
|
create view mahasiswa2 as select nim_mah, nama_mah, nama_fak
fro
m mahasiswa, fakultas where
mahasiswa.id_fak=fakultas.id_fak;
|
sama
|
KESIMPULAN
-
Agregasi operator adalah fungsi operator untuk
menghitung hasil tampilan, yaitu dengan menggunakan perintah select kemudian
diikuti oleh operator agregasi diantaranya ialah sum, avg, min, max dan
lain-lain
-
Group by merupakan fungsi yang digunakan untuk
pengelompokan dari perintah select
-
Pemakaian HAVING terkait dengan GROUP BY,
kegunaannya adalah untuk menentukan kondisi bagi GROUP BY, dimana kelompok yang
memenuhi kondisi saja yang akan dihasilkan
-
Penggunaan CASE akan membentuk output tersendiri
berupa sebuah kolom baru dengan data dari operasi yang didalamnya
-
VIEW adalah suatu relasi virtual yang tidak
perlu ada database tetapi dapat diproduksi oleh pemakai tertentu, pada ketika
permintaan
KRITIK SARAN DAN
MANFAAT
Kritik dan sarannya, bisa dikembangkan bagaimana penggunaan agregasi dalam mengoperasikan sebuah tabel
Manfaatnya, semoga bermanfaat dalam segala pembidangan dalam sql di kemudian hari
REFERENSI
http://uc1n-klik.blogspot.com/2010/11/agregate-function-dan-phpmyadmin.html
http://www.w3resource.com/mysql/control-flow-functions/case-operator.php
http://www.mysqltutorial.org/create-sql-views-mysql.aspx
Modul Praktikum dbd v.pdf
http://dev.mysql.com/
w3schools.com/
Manfaatnya, semoga bermanfaat dalam segala pembidangan dalam sql di kemudian hari
REFERENSI
http://uc1n-klik.blogspot.com/2010/11/agregate-function-dan-phpmyadmin.html
http://www.w3resource.com/mysql/control-flow-functions/case-operator.php
http://www.mysqltutorial.org/create-sql-views-mysql.aspx
Modul Praktikum dbd v.pdf
http://dev.mysql.com/
w3schools.com/
Saya ingatkan lagi,
BalasHapusEvaluasi Perbandiangan Berisi
Perbedaan,Persamaan, Kelemahan, Kelebihan masing-masing DBMS dalam konteks Bab tertentu…
sudah ada di tabelnya kan mas -_-
BalasHapus