Laporan DBD BAB 5 AGREGASI SQL DAN VIEW

on Minggu, 14 Desember 2014


1.
       AGGREGATE OPERATOR
Fungsi Aggregate adalah fungsi yang diterapkan terhadap sekumpulan data pada sebuah field dan menghasilkan nilai tunggal. Fungsi aggregate atau disebut fungsi ringkasan digunakan untuk melakukan penghitungan menjadi sebuah nilai dari beberapa nilai input. Aggregate dapat digabungkan dengan sebuah parameter seperti WHERE untuk menghasilkan suatu hasil yang lebih kompleks lagi.
2.       GROUP BY
Group  By  merupakan  fungsi  yang  digunakan  untuk  melakukan pengelompokan  dari  perintah SELECT.  Group  by  seringkali  diperlukan  untuk menjalankan  agregate  menjadi  sebuah  kelompok  dari hasil  Query.  Berikut  struktur SQL untuk penampilan data :
select nama_kolom from nama_tabel group by nama_kolom;
3.       HAVING
Pemakaian  HAVING  terkait  dengan  GROUP  BY,  kegunaanya  adalah  untuk menentukan  kondisi  bagi GROUP  BY,  dimana  kelompok  yang  memenuhi  kondisi saja yang akan di hasilkan.
Berikut Struktur yang digunakan :
4.       CASE
Meskipun SQL bukan merupakan sebuah prosedur bahasa perograman, namun dalam prosesnya dapat dengan bebas mengontrol data yang kembali dari  query. Kata WHERE  menggunakan  perbandingan  untuk mengontrol  pemilihan  data,  sedangkan CASE perbandingan dalam bentuk output kolom. Jadi intinya penggunaan  CASE akan membentuk output tersendiri berupa sebuah kolom baru dengan data dari operasi yang di dalamnya.Struktur didalam select seperti berikut :
CASE WHEN condition THEN result
[WHEN ...]
[ELSE result] END
Berikut  contoh  query  penggunaan  case,  penentuan  umur  jika  umurnya dibawah 1986-01-01 dianggap dewasa dan lebih dari itu dianggap remaja :
select txt_namadepan, txt_namaakhir,  dt_tgllahir, case when dt_tgllahir < '1986-01-01' then 'dewasa' else 'balita' end as umur from pegawai ;
5.       VIEW
Views dapat juga disebut tabel bayangan tetapi bukan  temporary table, bukan juga  merupakan  sebuah tabel  yang  asli.  Suatu  view  adalah  suatu  relasi  virtual  yang tidak  perlu  ada  database  tetapi  dapat diproduksi  atas  permintaan  oleh  pemakai tertentu,  pada  ketika  permintaan.  Satu  lagi  kelebihan  yang dimiliki  oleh  view  yaitu dapat menyimpan perintah query, dan dapat mewakili sebuah subset dari tabel asli dan memilih kolom atau row tertentu dari tabel biasa.
create view nama_tabel_view as query;
Catatan  :  Query  diatas  merupakan  query  untuk  menampilkan  data menggunakan query sql select.
Berikut adalah tabel contoh kasus penggunaan VIEW :
B.      HASIL PRAKTIKU
  • MySQL
Dari table mahasiswa yang telah kita buat pada pertemuan sebelumnya, tambahkan beberapa data yang akan kita gunakan untuk pertemuan kali ini, tambahkan kolom gender kemudian update datanya. 
      Eitss jangan lupa ya,.. sebelum kita melakukan percobaan pada MySQL, kita harus masuk dulu ke MySQL_nya dengan mengetikkan “mysql –u root” dan memilih database yang akan kita pakai dengan “use nama_database”.  
1.       Tampilkan banyaknya data mahasiswa yang telah di inputkan. Kemudian cari nim atau id mahasiswa yang paling kecil, paling besar dan rata-ratanya.
Berikut Syntaxnya :
SELECT * from mahasiswa; // untuk menampilkan seluruh data mahasiswa
SELECT MAX(nim_mah) from mahasisswa; // untuk menampilkan nim_mahasiswa yang paling besar.
SELECT MIN(nim_mah) from mahasiswa; // untuk menampilkan nim_mahasiswa yang paling kecil.
SELECT AVG(nim_mah)from mahasiswa; // untuk menampilkan rata-rata nim_mahasiswa
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg0Mcvf3Xh-FzalOEez4cgmSiKvPijguC-hKW7AiEsyDmHw0GJNAMa8e7tdmIbgbZAsKp1nR9XC6axFBkcDdtCcY4o1bxDmMe4TYp5gnOW1Wv0_38sREcw-KVO8lKDxAdHgsT2RBoptvvGX/s1600/1.png
2.       Tampilkan rata-rata id atau nim mahasiswa yang data nimnya lebih dari 12.
Berikut Syntaksnya :
SELECT AVG(nim_mah) from mahasiswa where nim_mah>12;


https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhWufM34tWtbZ7Tr3MrwHCVi8zymZAiVSo2chyyoDpt7aEoaYI2rz-cHS9oEgy_4pvT9AYKZTuIwI3jsC1NofzW5w0V3Engg_uWz2OxqGFYpc_Rpbd5mjqXgr8I6odR_qcGEtj7jo9diXly/s1600/2.png
3.       Tampilkan jumlah mahasiswa berdasarkan fakultas. Sehingga hasilnya adalah column nama fakultas & count(*).
Berikut syntaksnya :
SELECT nama_fak, COUNT(*) from mahasiswa m, fakultas f WHERE m.id_fak=f.id_fak GROUP BY nama_fak;

https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgLqsoGX50dm7QMCagCn5N3tMoAsdNMQEMUOab9xGi53tbW0Gn6gFzj4KGo-jYRkngUNlm4nBFeDttvmkfdDShZjKuwMhSxwIr6QW3ILp-LulxyjPYhyphenhyphenl_xfX3F5qTcL73_wFN1TLgCaeB5/s1600/3.png
4.       Tampilkan seperti nomor 3 dengan persyaratan jumlah mahasiswa yang lebih dari sama dengan 2 saja yang ditampilkan.
berikut Syntaksnya :
SELECT nama_fak, COUNT(*) from mahasiswa m, fakultas f WHERE m.id_fak=f.id_fak GROUP BY nama_fak HAVING COUNT(*)>=2;
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9feNvlveWsjhCSpWjKjdQNnJeHr2CMttiON3nzai1zmtwg9LZMPxKfcPJPidJJunhrScuImVnm6rR5jK9Hl9zFbMYwmYAWA1AWGJbyGRYkAxPIJim6vUZrR-wKEIJqrSNcZsR6-YvT6q3/s1600/4.png
     
5.       Tampilkan data mahasiswa dengan persyaratan, jika jenis kelaminnya ‘L’ maka tertulis ‘Laki-laki’ dan sebaliknya.
Berikut Syntaksnya :

SELECT *, CASE WHEN gender = ‘L’ THEN ‘Laki-laki’ ELSE ‘Perempuan’ END AS ket from mahasiswa;
                 
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_rE2Xm2GR7xqSl1OadP0xbvv1o5MV69PTKipxVDnRk3_OOiCKA3GUAcAOMY_gZ6ltV4feiBOcGdAjoBJDA0PEBNGPvdnTFCy6uJc6TOgP0eNeI1tGxPhZqWnsOLU5E1yWfbaXGYVloipq/s1600/5.png
6.       Buatlah view untuk query penampilan data mahasiswa, fakultas. Ambil berdasarkan nim, nama mahasiswa, nama fakultas.
Berikut Syntaksnya :
CREATE VIEW Data_Mahasiswa AS SELECT nim_mah, nama_mah, nama_fak from mahasiswa, fakultas WHERE mahasiswa.id_fak=fakultas.id_fak; // untuk membuat VIEW
SELECT * from Data_Mahasiswa; // untuk menampilkan hasil VIEW
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiFHdUHfIFwAH1KLsGmzBPxsP_dvzpZGLfzRvkFOh7HOifW1XrewcjBucatTobRFUYiIQnms2-Hgvp4m9k3d-EhlfQ1BRZ7ZjM0rlmuTs96Q49Iao30J09dNZZ1TsCBNXNLY9dckMG9e3xX/s1600/6a.png
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiLfaJLhyphenhyphenbpRHzozcvLMelmN8piSaICrsXsGOo7BMWfVh3XRpzDCqYA4_OmpQu0BKphh9SL-mElE4PqILZ5I4qOJip_pE_uRUOn_XyUyjAqIYevCXwmFEN_wBB_cWXItgf2tgZhGujw6W0o/s1600/6b.png
  • PostgreSQL
Dari table mahasiswa yang telah kita buat pada pertemuan sebelumnya, tambahkan beberapa data yang akan kita gunakan untuk pertemuan kali ini, tambahkan kolom gender kemudian update datanya. J
            1.   Tampilkan banyaknya data mahasiswa yang telah di inputkan. Kemudian cari nim atau id
                  mahasiswa yang paling kecil, paling besar dan rata-ratanya.
Berikut Syntaksnya :

SELECT * from mahasiswa; // untuk menampilkan seluruh data mahasiswa
SELECT MAX(nim_mah) from mahasiswa; // untuk menampilkan nim_mahasiswa yang paling besar.
SELECT MIN(nim_mah) from mahasiswa; // untuk menampilkan nim_mahasiswa yang paling kecil.
SELECT AVG(nim_mah)from mahasiswa; // untuk menampilkan rata-rata nim_mahasiswa


https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh033GSqzaa2DZ0am3K8TgUGjEqBysSVutzynWHpmjE3BNqNehJD0zPleo3L1goLxdMvvcpXEWyxbQNAYJA0cOVvMHPHQ0TsdJGGoi13V6ZhpPK3W9HFpclE1jUWvPBYzYQg4uNRn55Iae1/s1600/a.png

   2.   Tampilkan rata-rata id atau nim mahasiswa yang data nimnya lebih dari 12.
           Berikut Syntaksnya :
SELECT AVG(nim_mah) from mahasiswa where nim_mah>12;
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzLocN4p0oo_BNvziRV3roXf5KU_8pDy7XwDMFi-o9BhPWulmf2dCNvYvGNkqp7Q9apKATw6p1zc9WZtyZS_fzdg7SlfDGo2WrtJnJ8kYLL_5NAl1qtCOWHA5JsdkMsgBNqICjAJhkW6R5/s1600/2.png


 3.  Tampilkan jumlah mahasiswa berdasarkan fakultas. Sehingga hasilnya adalah column nama fakultas & count(*).
          Berikut syntaksnya :

SELECT nama_fak, COUNT(*) from mahasiswa m, fakultas f WHERE m.id_fak=f.id_fak GROUP BY nama_fak;
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgcnRN3wJxmfQrrJMOXeZXGuiiOvb4P21L1RG79RYtZ6w5yaozhArnXK-kmTGAfizNVFGNhTles9NWtr6EFwoHEWknhTAlNxv-Uo1voc2vxt4CGXtK6-l6t5MMISxOZR-sEE7wmwsby0DVi/s1600/3.png

Catatan : ( mahasiswa m, fakultas f ) m dan f adalah sebuah inisialisasi dari table mahasiswa . Dengan begitu, kita bisa menuliskan inisial m dan f untuk perintah selanjutnya.

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

SELECT nama_fak, COUNT(*) from mahasiswa m, fakultas f WHERE m.id_fak=f.id_fak GROUP BY nama_fak HAVING COUNT(*)>=2;
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgLb31hTZJ4qD49tgjk7CS_cje50520i8_aMk-jtYV9XNxbRnHt8hez-SQH40CeDs6G1I-qM402jPKjGEHdrRy4WxXc4lTKVE7WpVcbSG5jPUiXSk56TW-uKjxaqHgeNdCKYoBr81jTC7kO/s1600/4.png

   5.  Tampilkan data mahasiswa dengan persyaratan, jika jenis kelaminnya ‘L’ maka tertulis‘Laki-laki’ dan sebaliknya.
           Berikut Syntaksnya : 

SELECT *, CASE WHEN gender = ‘L’ THEN ‘Laki-laki’ ELSE ‘Perempuan’ END AS ket from mahasiswa;
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg8FgjzoOE09anZp0JlevPilwLNACOGy-KJIhinhA2OmR3pF_lX6o5WUoX8abTtOLmVoekHsFzShR6zPlzAaitTeGf8MtCTLcXZszxa68yEoFvj7xZazSg-o9v-keSGlDP7gdfO9zfxWlbf/s1600/5.png

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

CREATE VIEW Data_Mahasiswa AS SELECT nim_mah, nama_mah, nama_fak from mahasiswa, fakultas WHERE mahasiswa.id_fak=fakultas.id_fak; // untuk membuat VIEW
SELECT * from Data_Mahasiswa; // untuk menampilkan hasil VIEW
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEigrVowf7HyAOC0IaX-Uwh8upH_v2GyEmataIagv7WELBHKntZvHFhnUoPHyAslaH-Ri3CYOKsIyHIIuXGhBtaKDIsX87TDnNBVfVlYeuqcHdbvfkMHaO9DEu85dCRua4u2wO6J4-TaxKc7/s1600/6.png
  C.      EVALUASI PERBANDINGAN  DBMS MySQL dengan DBMS PostgreSQL
Dari hasil praktikum dan percobaan yang telah dilakukan, dapat di lihat bahwa antara Postgre SQL dengan MySQL mempunyai sedikit perbandingan yang terletak pada operator “COUNT, MAX, MIN, dan AVG”. pada MySQL kita harus menuliskan operator tersebut TANPA SPASI, misalnya : “COUNT(*)”. Sedangkan pada PostgreSQL, adanya spasi atau tidak adanya spasi dalam penulisan operator tersebut tidaklah berpengaruh, misalnya : “COUNT (*)” atau “COUNT(*)”.
     D.      KESIMPULAN, KRITIK, SARAN, MANFAAT
berdasarkan dari hasil percobaan dan hasil praktikum, maka dapat disimpulkan bahwa fungsi agregasi pada kedua DBMS ini mempunyai banyak kesamaan walaupun ada sedikit perbedaan pada penggunaan ‘SPASI’ saat mengoperasikan fungsi “COUNT, MAX, MIN, dan AVG”. menurut saya, penggunaan fungsi agregasi yang sudah dilakukan pada saat praktikum sudah jelas, namun ada sedikit menurut saya yang harus lebih di perjelas lagi yaitu pada penggunaan HAVING, seharusnya pada modul yang dipakai bisa ditambah contohnya, tidak hanya penggunaan HAVING SUM saja  tapi ditambahkan penggunaan HAVING COUNT juga. Dan yang terakhir saya berharap semoga sedikit tulisan di blog saya ini bisa bermanfaat bagi pembaca. 
    E.       DAFTAR PUSTAKA
ANDI OFFSET, 2010, Shotcourse SQL SERVER 2008 Express, Yogyakarta


0 komentar: