HanungNP/Basis Data/Politel/2012
Lanjutan perintah Select (2)
• Like
• Agregate Function (fungsi agregasi)
• Having (with group by)
• Case ‘MIX’• Case ‘MIX’
HanungNP/Basis Data/Politel/2012
Like
• SELECT * FROM nama_table
• WHERE nama_kolom LIKE ‘content%’
atau
• SELECT * FROM nama_table• SELECT * FROM nama_table
• WHERE nama_kolom LIKE ‘%content’
Atau
SELECT * FROM nama_table
• WHERE nama_kolom LIKE ‘%content%’
HanungNP/Basis Data/Politel/2012
karakter
karakter keterangan
+ Kata ini harus ada pada pencarian
- Kata ini tidak boleh ada dalam pencarian- Kata ini tidak boleh ada dalam pencarian
> Kata ini lebih diutamakan
< Kata ini tidak diutamakan
* Mencari sembarang karakter
HanungNP/Basis Data/Politel/2012
Gabungan Like & Join
Menampilkan nama anggota dan judul bukuyang diawail huruf W dan terdiri dariMINIMAL 8 huruf
SELECT nama_anggota, judul_buku
FROM anggota, buku, peminjaman
WHERE buku.id_buku = peminjaman.id_buku
AND judul_buku LIKE 'W_______%';
HanungNP/Basis Data/Politel/2012
Agregate Function
Fungsi Agregat:
• MIN(),
• MAX(),
• AVG(),• AVG(),
• SUM(),
• COUNT()
HanungNP/Basis Data/Politel/2012
Contoh tabel employee
HanungNP/Basis Data/Politel/2012
Function dasar
• SELECT COUNT(*) FROM employee;
• select SUM(salary) FROM employee;
• select MAX(salary) FROM employee;
• select MIN(salary) FROM employee;• select MIN(salary) FROM employee;
• select AVG(salary) FROM employee;
HanungNP/Basis Data/Politel/2012
• Beberapa aggregate functions bisadigabungkan dalam satu perintah SQL
Bisa menambahkan ekspresi aritmetika:
SELECT SUM(saldo + 1000) FROM rekening;SELECT SUM(saldo + 1000) FROM rekening;
SELECT SUM(saldo) + 1000 FROM rekening;
SELECT MAX(saldo) - MIN(saldo) FROMrekening;
HanungNP/Basis Data/Politel/2012
Sintax umum
• SELECT daftar_kolom_non_fungsi_ag,fungsi_ag(nama_kolom1),
fungsi_ag(nama_kolom2)
• FROM daftar_tabel• FROM daftar_tabel
• WHERE syarat_dan_atau_foreign_key
• GROUP BY daftar_kolom_non_fungsi_ag
HanungNP/Basis Data/Politel/2012
Agregate Function, Group By
• SELECT designation, MIN(salary) , MAX(salary)FROM employee
GROUP BY designation;
HanungNP/Basis Data/Politel/2012
SELECT kolom1, SUM( kolom2 * kolom3) total
FROM nama_tabel
GROUP BY kolom1;
HanungNP/Basis Data/Politel/2012
Dalam Group by
• Yang harus diperhatikan ketika menggunakan GROUP BYJika menggunakan GROUP BY, semua field yang ingin ditampilkandalam SELECT harus tercantum di GROUP BY.
• Contoh yang salah:– SELECT jenis_transaksi, tanggal FROM transaksiGROUP BY jenis_transaksi;GROUP BY jenis_transaksi;
atau– SELECT jenis_transaksi, tanggal FROM transaksiGROUP BY tanggal;
• Contoh yang benar:– SELECT jenis_transaksi, tanggal FROM transaksiGROUP BY jenis_transaksi, tanggal;
HanungNP/Basis Data/Politel/2012
HAVING
• Merupakan pasangan dari GROUP BY, digunakan untukmembatasi kelompok yang ditampilkan:
SELECT jenis_transaksi, tanggal FROM transaksiGROUP BY jenis_transaksi, tanggalHAVING jenis_transaksi = ‘kredit’;HAVING jenis_transaksi = ‘kredit’;
• Hasil yang sama bisa didapatkan dengan:
SELECT jenis_transaksi, tanggal FROM transaksiWHERE jenis_transaksi = ‘kredit’GROUP BY jenis_transaksi, tanggal;
HanungNP/Basis Data/Politel/2012
Dalam Having
Yang harus diperhatikan:
1. Jika menggunakan HAVING, maka pembatasandilakukan setelah hasil dikelompokkan dalamGROUP BY.GROUP BY.
2. Jika menggunakan WHERE, maka pembatasandilakukan sebelum hasil dikelompokkan dalamGROUP BY.
3. Field(-field) yang disebut di HAVING harus ada diGROUP BY, atau berupa aggregate functions.
HanungNP/Basis Data/Politel/2012
Contoh dengan HAVING:
SELECT kode_cabang, SUM(saldo), COUNT(*)FROM rekeningGROUP BY kode_cabangGROUP BY kode_cabangHAVING SUM(saldo) >= 5000000
HanungNP/Basis Data/Politel/2012