BASIS DATA LANJUT SEMESTER II Bab 4: Pengambilan Data Lanjut Djuniharto, SE, S.Kom STIKOM PGRI Banyuwangi
Pengambilan Data Lanjut LIKE Operator LIKE sangat berguna untuk melakukan pencarian yang didasarkan pada penggalan dari suatu data. LIKE digunakan untuk menjawab pertanyaan “Siapa saja karyawan yang namanya mengandung Andi?” Sebagai contoh: Hasilnya adalah semua nama yg mengandung “andi” akan muncul (Suwandi, Rita Andini). Tanda % di depan dan belakang ‘andi’ menyatakan bahwa boleh berisi apa saja atau bahkan tidak mengandung apapun. SELECT nama FROM KARYAWAN WHERE nama LIKE “%andi%” Djuniharto, SE, S.Kom STIKOM PGRI Banyuwangi
Pengambilan Data Lanjut LIKE Ekspresi yang terletak sesudah operator LIKE secara prinsip dapat mengandung tanda % di posisi mana saja dan berapa saja, tergantung keperluan. Contoh peletakan tanda %: Pola Keterangan %a% Cocok dengan apa saja yang mengandung karakter a atau A a% Cocok dengan yang berawalan a atau A %a Cocok dengan yang berakhiran a atau A %a%y% Mengandung a dan kemudian sesudahnya mengandung y di posisi manapun %a_b% Menyatakan bahwa antara a dan b boleh berupa satu karakter apa saja Djuniharto, SE, S.Kom STIKOM PGRI Banyuwangi
Pengambilan Data Lanjut LIKE Sebagai contoh: SELECT nama FROM KARYAWAN WHERE nama LIKE “%a%y%” SELECT nama FROM KARYAWAN WHERE nama LIKE “%t_i%” Djuniharto, SE, S.Kom STIKOM PGRI Banyuwangi
Pengambilan Data Lanjut GROUP BY Masih ingat DISTINCT? Fungsinya untuk membuat data tidak kembar. Hal itu bisa digantikan dengan GROUP BY. GROUP BY mempunyai pasangan berupa HAVING. SELECT DISTINCT Jenis_karyawan FROM KARYAWAN SELECT Jenis_karyawan FROM KARYAWAN GROUP BY Jenis_karyawan SELECT Jenis_karyawan FROM KARYAWAN GROUP BY Jenis_karyawan HAVING Jenis_karyawan <> ‘*’ Djuniharto, SE, S.Kom STIKOM PGRI Banyuwangi
Pengambilan Data Lanjut Fungsi Agregat Fungsi agregat (fungsi grup atau fungsi ringkasan) adalah fungsi yang disediakan untuk menghasilkan sebuah nilai berdasarkan sejumlah data. Fungsi sendiri adalah suatu kumpulan instruksi yang menghasilkan sebuah nilai jika dipanggil. Fungsi Agregat Keterangan AVG() Memperoleh nilai rata-rata COUNT() Menghitung cacah data yang tidak bernilai NULL MAX() Menghasilkan nilai terbesar MIN() Menghasilkan nilai terkecil SUM() Memperoleh penjumlahan data SELECT MAX FROM PROYEK Untuk melihat id_proyek terbesar pada tabel proyek Djuniharto, SE, S.Kom STIKOM PGRI Banyuwangi
Pengambilan Data Lanjut Fungsi Agregat Berapa jumlah proyek yang belum selesai? Berapa jumlah karyawan per departemen? SELECT COUNT(id_proyek) FROM proyek WHERE selesai=false SELECT id_proyek, COUNT(*) FROM karyawan GROUP BY id_dep Djuniharto, SE, S.Kom STIKOM PGRI Banyuwangi
Memberi Nama Alias untuk Judul Kolom Pengambilan Data Lanjut Memberi Nama Alias untuk Judul Kolom Judul kolom pada hasil count(*) bisa diganti dengan kata ‘jumlah’ menggunakan klausa AS Contoh lain: SELECT id_dep, COUNT(*) AS Jumlah FROM karyawan GROUP BY id_dep SELECT d.nama_dep, COUNT(*) AS Jumlah FROM KARYAWAN k, DEPARTEMEN d WHERE k.id_dep = d.id_dep GROUP BY d.nama_dep Djuniharto, SE, S.Kom STIKOM PGRI Banyuwangi
Mengubah Informasi dengan CASE Pengambilan Data Lanjut Mengubah Informasi dengan CASE Berapa jumlah karyawan per departemen dan per jenis kelamin? Informasi pada jenis kelamin akan membingungkan, karena berisi 0 dan 1. agar supaya tidak membingungkan maka 0 diganti dengan wanita dan 1 diganti dengan pria. Untuk keperluan tersebut digunakan klausa CASE. Sebagai contoh: SELECT nama, CASE jenis_kelamin WHEN TRUE THEN ‘Pria’ ELSE ‘Wanita’ END AS ‘Jenis Kelamin’ FROM KARYAWAN SELECT karyawan.nama, CASE jenis_karyawan WHEN ‘M’ THEN ‘Manajer’ WHEN ‘S’ THEN ‘Sekretaris’ WHEN ‘T’ THEN ‘Teknisi’ ELSE ‘-’ END AS ‘Jenis Pekerjaan’ FROM KARYAWAN Djuniharto, SE, S.Kom STIKOM PGRI Banyuwangi
Pengambilan Data Lanjut Menggunakan Subquery Subquery disebut juga subselect. Adalah bentuk query yang terletak dalam query lain. Dengan kata lain di dalam SELECT terdapat SELECT lain. Siapa saja karyawan yang berusia di atas rata-rata karyawan keseluruhan? Caranya: Pertama kita cari dulu usia rata-rata dari seluruh usia karyawan, dengan perintah: Misalnya hasilnya adalah : 32.5926 Maka untuk mencari karyawan yang usianya di atas rata-rata, langkah perintah selanjutnya adalah: SELECT AVG(ROUND(DateDiff(Now(),Tanggal_lahir)/365.0)) As Rata-rata FROM KARYAWAN SELECT nama, ROUND(DateDiff(Now(),Tanggal_lahir)/365.0)) As Usia FROM KARYAWAN WHERE ROUND(DateDiff(Now(),Tanggal_lahir)/365.0) > 32.5926 Djuniharto, SE, S.Kom STIKOM PGRI Banyuwangi
Pengambilan Data Lanjut Menggunakan Subquery SELECT AVG(ROUND(DateDiff(Now(),Tanggal_lahir)/365.0)) As Rata-rata FROM KARYAWAN Untuk menyederhanakan kedua perintah diatas yaitu: SELECT nama, ROUND(DateDiff(Now(),Tanggal_lahir)/365.0)) As Usia FROM KARYAWAN WHERE ROUND(DateDiff(Now(),Tanggal_lahir)/365.0) > 32.5926 SELECT nama, ROUND(DateDiff(Now(),Tanggal_lahir)/365.0)) As Usia FROM KARYAWAN WHERE ROUND(DateDiff(Now(),Tanggal_lahir)/365.0) > (SELECT AVG(ROUND(DateDiff(Now(),Tanggal_lahir)/365.0)) FROM KARYAWAN) Djuniharto, SE, S.Kom STIKOM PGRI Banyuwangi