Selasa, 21 Oktober 2014

AGREGASI SQL DAN VIEW


AGREGATE OPERATOR
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.  Adapun fungsi  agregate  yang  disediakan oleh
PostgreSQL dapat dilihat pada tabel berikut :


Berikut contoh aggregate query dari suatu tabel pegawai :


Untuk pencarian banyaknya pegawai kita bisa menggunakan query berikut :
select count(*) from pegawai;
hasil : 4
untuk pencarian nilai terbesar berdasarkan ID :
select max(Id_peg) from pegawai;
hasi : 4
untuk pencarian nilai terkecil :
select min(Id_peg) from pegawai;
hasil : 1
untuk pencarian rata-rata :
select avg(Id_peg) from pegawai;
hasil : 2.5000

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;
  Contoh :


-  Untuk menampilkan informasi nama pengarang :
  Select pengarang_buk from buku group by pengarang_buku;
  Hasil :


  Pada hasil query terlihat pengarang muncul hanya sekali.
  -  Untuk menampilkan informasi nama pengarang beserta jumlah buku yang
dikarang :
    Select pengarang_buk, count(*) from buku group by pengarang_buk;     
Hasil  :

  -  Untuk menampilkan informasi buku tiap tahunnya :
    Select tahun_buk, count(*) from buku group by tahun_buk;
    Hasil :
  
  -  Untu menampilkan informasi jumlah total uang tiap tahunnya :
    Select tahun_buk, sum(harga_buk) as total from buku group by tahun_buk;
    Hasil :


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 :
Kita akan menggunakan tabel “pesanan”


Sekarang jika kita ingin mencari pelanggan yang memiliki total order kurang dari
2000. Maka, kita dapat menggunakan statement :
select pelanggan, sum (hargaorder) from pesanan group by pelanggan having
sum (hargaorder) <2000;

 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 ;
  Hasil :


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 :
Kita akan menggunakan tabel “pesanan”


-  Kita akan membuat view dari tabel diatas dengan ketentuan  harga dikumpulkan
berdasarkan nama pelanggannya. Sebagai berikut :
create view total_pelanggan as select pelanggan, sum (hargaorder) from
pesanan group by pelanggan;
Untuk melihat hasil kita bisa melakukan query select sebagai berikut :
Select * from total_pelanggan;
Hasil :




   Tugas Praktikum

Mahasiswa
Nim_mhs
Nama_mhs
Alamat_mhs
Id_fak

Fakultas
Id_fak
Nama_fak

Nim : 12
Nama : edi
Alamat : malang
Fakultas : SAINTEK

  Nim : 13
  Nama : sinta
  Alamat : jogja
  Fakultas : SAINTEK

  Nim : 14
  Nama : luki
  Alamat : ponorogo
  Fakultas : PSIKOLOGI
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.
2.  Tampilkan rata-rata id atau nim mahasiswa yang data nimnya lebih dari 12.
3.  Tampilkan jumlah mahasiswa berdasarkan fakultas. Sehingga hasilnya seperti berikut:
Nama fakultas  Count(*)
Saintek  2
Primary key
Foreign key
Primary key Psikologi  1

4.  Tampilkan  seperti nomor 3 dengan persyaratan jumlah mahasiswa yang lebih dari
sama dengan 2 saja yang ditampilkan.
5.  Tampilkan data mahasiswa dengan persyaratan, jika jenis kelaminnya “L” maka
tertulis laki-laki dan bila “P” maka tertulis perempuan.
6.  Buatlah view untuk query  penampilan data mahasiswa, fakultas. Ambil berdasarkan
nim, nama mahasiswa, nama fakultas.
Tugas Rumah
1.  Buat  laporan  praktikum  menggunakan DBMS mysql untuk mengerjakan tugas
praktikum 1-5 dan letakkan di blog.
2.  Evaluasi perbedaan kelebihan dan kemudahan dari kedua DBMS.

Jawaban
1. Kita buka dahulu data tabel mahasiswa terlebih dahulu.


untuk menampilkan NIM mahasiswa terkecil:
select min(nim_mah)from mahasiswa;


untuk menampilkan NIM mahasiswa terbesar:
select max(nim_mah)from mahasiswa;


untuk menampilkan rata-rata dari NIM mahasiswa:
select avg(nim_mah)from mahasiswa;

2.tampilkan rata-rata id atau NIM mahasiswa yang data nimnya lebih dari 14:
select avf(nim_mah)from mahasiswa where nim_mah >14;

3.menampilkan jumlah mahasiswa berdasaran fakultas:
select nama_fak, count(*) from mahasiswa, fakultas where mahasiswa.id_fak=fakultas.id_fak group by nama_fak;

4.menampilkan seperti yang diatas (3) dengan syarat jumlah mahasiswa yang lebih dari 3 saja yang ditampilkan:
select nama_fak, count(*) from mahasiswa, fakultas where mahasiswa.id_fak=fakultas.id_fak group by nama-fak having count(nama_mah)>3;

5.tampilkan jenis kelamin "L" menjadi "Laki-laki" dan "P" menjadi "Perempuan" pada tabel mahasiswa:
select nim_mah, nama_mah,alamat_mah,id_fak,no_telp,genderncase when gender='L' then 'Laki-laki' else 'Perempuan' end as jenis_kelamin from mahasiswa;

6.buatlah view untuk query penampilan data mahasiswa, fakultas dan jurusan. ambil berdasarkasn nim, nama mahasiswa dan fakultas.
create view mahasiswa_baru as select nim_mah, nama_mah, nama_fak from mahasiswa, faultas where mahasiswa.id_fak=fakultas.id_fak;

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(*)”


1 komentar:

  1. Training Scriptcase di Indonesia, kunjungi www.OwenSolution.com

    BalasHapus