Assalamu'alaikum Selamat Datang :)

Minggu, 19 Oktober 2014

Agregasi SQL dan View

AGREGASI SQL DAN VIEW


A. LANDASAN TEORI

   
1. AGREGASI 

     Agregasi dalam SQL merupakan proses untuk mendapatkan nilai dari sekumpulan data yang telah dikelompokkan. Pengelompokkan data berdasarkan pada kolom atau kombinasi kolom yang terpilih. 
Beberapa fungsi agregasi adalah :
  • MAX          = Mencari data terbesar dari sekelompok data.
  • MIN            = Mencari data terkecil dari sekelompok data.
  • COUNT      = Mencari banyaknya baris.
  • SUM           = Mancari jumlah data.
  • AVG           = Mencari nilai rata-rata.
dan  berikut ini adalah penggunaan fungsi agregasi.
-- Untuk mencari data terbesar 

select max(nama_kolom) from nama_tabel;

-- Untuk mencari data terkecil 

select min(nama_kolom) from nama_tabel;

-- Untuk mencari banyaknya baris

select count(*) from nama_tabel;

-- Untuk mencari jumlah data

select sum(nama_kolom) from nama_tabel;

-- Untuk mencari nilai rata-rata

select avg(nama_kolom) from nama_tabel;


2. GROUP BY

   Grouping pada sql adalah untuk mengelompokkan data , agar data yang sama tampil menjadi satu baris saja (tidak duplikat). Hal ini hampir sama dengan distinct hanya bedanya gruping bisa menggunakan fungsi agregasi seperti max, min, count, sum, avg dan memang fungsi-fungsi tersebut harus di-run dengan gruping.  berikut adalah struktur query nya.

select nama_kolom from nama_tabel group by nama_kolom;


3.  HAVING

   Having adalah penggantinya where dalam gruping, tapi kita masih bisa menggunakan where dalam grouping. Having digunakan jika kolom yang kita select sebagai grouping akan dijadikan kriteria (ada kriterianya).  ini struktur yang dipakai :

select nama_kolom fungsi_agregasi from nama_tabel group by nama_kolom having fungsi_agregasi kondisi;


4. CASE 

   Case digunakan untuk menampilkan nilai tertentu dari beberapa barisan data dengan syarat-syarat atau kondisi yang kita berikan. struktur query nya :

case when kondisi then result when [....] else result end;


5.  VIEW 

  Tabel view adalah tabel temporary kadang juga ada yang bilang virtual table . Biasanya view dibuat untuk menyederhanakan pengambilan data misalkan ditabel tersebut terdapat join, group by, fungsi agregasi. 
Keuntungan tabel view :
  • Dalam coding tidak perlu mengetik ulang query yang panjang untuk menghasilkan query. cukup panggil nama view nya saja.
  • Dalam proses database tidak terlalu lama, karena hasil query nya sudah disimpan di table virtual.
  • User atau aplikasi tidak dapat mengubah atau menghapus data ditable view.
untuk membuat tabel view

create view nama_tabel_view as query;
(query untuk nampilin data pakai select)



B. TUJUAN
  • Memahami operator agregasi sql sehingga mempermudah dalam hal perhitungan data.
  • Memahami cara penggunaan view.

C. HASIL PRAKTIKUM

1. Tugas praktikum menggunakan dbms mysql.

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 atau id mahasiswa yang paling kecil, paling besar dan rata-ratanya.

gunakan user kita

mysql -u visa




gunakan database kita

use visa13650065;




karena ke3 data yang ingin ditambahkan sudah ada semua. maka langsung saja ke soal.




tampilkan banyaknya data mahasiswa;

select count(*) from mahasiswa;





tampilkan nilai minimum

select min(nim_mah) from mahasiswa;




tampilkan nilai maximum

select max(nim_mah) from mahasiswa;




tampilkan rata-rata

select avg(nim_mah) from mahasiswa;




2. Tampilkan rata-rata id atau nim mahasiswa yang data nimnya lebih dari 12.

select avg(nim_mah) from mahasiswa where nim_mah > 12;



3. Tampilkan jumlah mahasiswa berdasarkan fakultas. sehingga hasilnya seperti berikut


select nama_fak, count(*) from mahasiswa m, fakultas f where m.id_fak = f.id_fak group by nama_fak;




4. Tampilkan seperti nomor 3 dengan persyaratan jumlah mahasiswa yang lebih dari sama dengan 2 saja yang ditampilkan.

select nama_fak, count(*) from mahasiswa m, fakultas f where m.id_fak = f.id_fak group by nama_fak having count (nama_fak) >= 2;




5. Tampilkan data mahasiswa dengan persyaratan, jika jenis kelaminnya "L" maka tertulis laki-laki dan jika "P" maka tertulis perempuan

select *, case when gender = "L" then "Laki-laki" else "Perempuan" end as = Jenis_Kelamin from mahasiswa;




6. Buatlah view untuk query penampilan data mahasiswa, fakultas. Ambil berdasarkan nim, nama mahasiswa, nama fakultas.

create view mah_fak as select nim_mah, nama_mah, nama_fak from mahasiswa m, fakultas f where m.id_fak = f.id_fak;




lihat tabel view nya

select * from mah_fak;





2. Evaluasi perbedaan kelebihan dan kemudahan dari kedua DBMS.

    Kelebihannya dari praktikum ini adalah dari segi query yang digunakan sama. jadi kelebihannya menurut saya tidak ada. Kemudahannya juga kalau dari segi query nya aja sama maka kemudahannya tidak bisa dibedakan lebih mudah menggunakan yang mana, kan query nya sama ya gak ? dari praktikum kali ini mungkin kelebihan dan kemudahannya tidak ada. 

NOTE * sedikit tambahan dari saya mungkin kalo di postgre setelah fungsi agregasi lalu ada tanda "()" atau kolom itu  bisa dipisah dengan spasi tapi kalau pada mysql tidak bisa dipisah dengan spasi, kalau dipisan maka query nya eror.



D. PERBANDINGAN POSTGRE DAN MYSQL

-- Untuk menghitung banyaknya mahasiswa
query nya sama

select count(*) from mahasiswa;

seperti yang sudah saya katakan sebelumnya pada postgre setelah fungsi agregasi ada tanda "(..)" itu bisa dipisah tapi kalau pada mysql tidak bisa

-- Untuk mencari nilai agregasi
query yang digunakan sama

select min(nim_mah) from mahasiswa;

select max(nim_mah) from mahasiswa;

select avg(nim_mah) from mahasiswa;

-- Untuk mencari rata-rata berdasarkan sebab kondisi
query yang digunakan sama

select avg(nim_mah) from mahasiswa where nim_mah > 12;

-- Untuk mencari jumlah data berdasarkan sesuatu
query nya sama

select nama_fak, count(*) from mahasiswa m, fakultas f where m.id_fak = f.id_fak group by nama_fak;

-- Untuk menggunakan having
query nya sama

select nama_fak, count(*) from mahasiswa m, fakultas f where m.id_fak = f.id_fak group by nama_fak having count (nama_fak) >= 2;

-- Untuk menggunakan case when
query nya sama

select *, case when gender = "L" then "Laki-laki" else "Perempuan" end as = Jenis_Kelamin from mahasiswa;

-- Menggunakan tabel view
query nya sama

create view mah_fak as select nim_mah, nama_mah, nama_fak from mahasiswa m, fakultas f where m.id_fak = f.id_fak;


E. KESIMPULAN

     Fungsi agregasi ada 5 yaitu min, max, avg, count dan sum. yang mempunyai fungsi yang berbeda-beda dalam penggunaanya. Ada juga group by untuk mengelompokkan data , agar data yang sama tampil menjadi satu baris saja (tidak duplikat). Hal ini hampir sama dengan distinct hanya bedanya gruping bisa menggunakan fungsi agregasi. ada juga Having digunakan jika kolom yang kita select sebagai grouping akan dijadikan kriteria (ada kriterianya). dan Case digunakan untuk menampilkan nilai tertentu dari beberapa barisan data dengan syarat-syarat atau kondisi yang kita berikan. ada juga tabel view, semacam tabel temporary. 


F. PENUTUP

   Seperti sebelum-sebelumnya, tak ada gading yang tak retak, namanya juga manusia pasti ada salah dan kekurangannya mohon dimaklumi. 


G. DAFTAR PUSTAKA


pribadiwidianto.blogspot.com/2011/12/pengelompokan-data-dan-agregasi-fungsi.html
http://teropong21.blogspot.com/2012/03/agregasi-database.html
http://tutorial-bor.blogspot.com/2011/07/tentang-order-by-group-by-fungsi.html
http://aprilysaputra.blogspot.com/2011/09/tutorial-sql.html
zainiakhmad.files.wordpress.com/2011/09/query-agregasi.pptx
djiesoft.blogspot.com/2013/08/t-sql-belajar-sql-query-grouping-group.html
http://erroz.wordpress.com/2009/07/25/penggunaan-case-when-dalam-query/
http://bantensmartlogin.blogspot.com/2012/12/penggunaan-statement-kondisi-pada-sql.html
http://jnet99.wordpress.com/2009/02/17/penggunaan-perintah-case-dalam-sql/
http://ri32.wordpress.com/2012/07/19/membuat-tabel-view-di-phpmyadmin/



Tidak ada komentar:

Posting Komentar

Omah Kayu - Paralayang Batu

Selamat Malam.. yaaap karena pas lagi buat review ini, jam udah menunjukkan pukul 20.54. Gak ada yang nanya sih :D Oke oke kali ini aku ma...