QUERY DATABASE SQL TINGKAT LANJUT ATAU EXPERT

Query data base berfungsi untuk manulis sebuah perintah pada database. Pada contoh-contoh kali ini bukanlah query dasar yang biasa digunakan melainkan query yang sudah sulit atau penggabungan dari query-query tersebut oleh karena itu bisa saya sebut tingkat expert. Langsung saja ke contoh :

1. PERINTAH SELECT :
   a. IN
Contoh:
– SELECT * FROM rekening WHERE kode_cabang IN (’clp’, ‘pwt’);
Perintah SQL di atas sama dengan:
– SELECT * FROM rekening WHERE kode_cabang = ‘clp’ OR kode_cabang = ‘pwt’;
[Tidak ada batas banyaknya nilai yang bisa ada di dalam IN (…)]
   b. NOT IN
Contoh:
– SELECT * FROM rekening WHERE kode_cabang NOT IN (’clp’, ‘pwt’);
Perintah SQL di atas sama dengan:
– SELECT * FROM rekening WHERE kode_cabang <> ‘clp’ AND kode_cabang <> ‘pwt’;
Nilai NULL tidak akan tampil dalam IN dan NOT IN.
Perhatikan perbedaan penggunaan OR dan AND dalam IN dan NOT IN.

2. PERINTAH BETWEEN

   a. BETWEEN
Contoh:

– SELECT * FROM rekening WHERE saldo BETWEEN 500000 AND 1000000;
Perintah SQL di atas sama dengan:
– SELECT * FROM rekening WHERE saldo >= 500000 AND saldo <= 1000000;
{Nilai yang pertama dalam BETWEEN harus lebih kecil dari nilai yang kedua.}

   b. NOT BETWEEN
Contoh:
– SELECT * FROM rekening mWHERE saldo NOT BETWEEN 500000 AND 1000000;
Perintah SQL di atas sama dengan:
– SELECT * FROM rekening WHERE saldo < 500000 OR saldo > 1000000;
{Perhatikan perbedaan penggunaan AND dan OR dalam BETWEEN dan NOT BETWEEN.}

3. FUNGSI AGGREGATE
Antara lain MIN ( ), MAX ( ), COUNT( ), SUM ( ), AVG ( ).
a) MIN ( )
Digunakan untuk mencari nilai terkecil dari sekumpulan record.
Contoh:
SELECT MIN(saldo) FROM rekening;
Bisa dibatasi dengan WHERE clause sehingga hanya record(-record) tertentu yang ditelusuri:
SELECT MIN(saldo) FROM rekening WHERE kode_cabang = ‘clp’;

b) MAX ( )
Digunakan untuk mencari nilai terbesar dari sekumpulan record.
Contoh:
SELECT MAX(saldo) FROM rekening;
Juga bisa dibatasi dengan WHERE clause:
SELECT MAX(saldo) FROM rekening WHERE kode_cabang = ‘clp’;

c) COUNT ( )
Digunakan untuk menghitung banyaknya record.
Contoh:
a. SELECT COUNT(*) FROM nasabah;
b. SELECT COUNT(nama_nasabah) FROM nasabah;
c. SELECT COUNT(alamat_nasabah) FROM nasabah;

Juga bisa dibatasi dengan WHERE clause.
Jika kita ingin menghitung banyaknya record yang unik (tidak ada pengulangan), gunakan DISTINCT:
SELECT COUNT(DISTINCT alamat_nasabah)FROM nasabah;
select count(sks) as jmlsks from mtkul where sks=4;

d) SUM ( )
Digunakan untuk menjumlahkan nilai-nilai dari sekumpulan record.
Contoh:
SELECT SUM(saldo) FROM rekening;
Bisa dibatasi dengan WHERE clause:
SELECT SUM(saldo) FROM rekening WHERE kode_cabang = ‘BRUS’;

e) AVG ( )
Digunakan untuk menghitung rata-rata nilai dari sekumpulan record.
Contoh:
SELECT AVG(saldo) FROM rekening;
Bisa dibatasi dengan WHERE clause:
SELECT AVG(saldo) FROM rekening WHERE kode_cabang = ‘BRUS’;
Beberapa aggregate functions bisa digabungkan dalam satu perintah SQL:
– SELECT MIN(saldo), MAX(saldo), AVG(saldo) FROM rekening;
Bisa menambahkan ekspresi aritmetika:
– SELECT SUM(saldo + 1000) FROM rekening;
– SELECT SUM(saldo) + 1000 FROM rekening;
– SELECT MAX(saldo) – MIN(saldo) FROM rekening;

Bisa menggunakan column alias (AS) untuk membuat tampilan lebih profesional.

4. GROUP BY
Digunakan untuk mengelompokkan sekumpulan record berdasarkan kolom(-kolom) tertentu.
Contoh:
• SELECT jenis_transaksi FROM transaksi GROUP BY jenis_transaksi;
• SELECT jenis_transaksi, tanggal FROM transaksi GROUP BY jenis_transaksi, tanggal;

Hasil yang sama bisa didapatkan dengan menggunakan DISTINCT:
• SELECT DISTINCT jenis_transaksi, tanggal FROM transaksi;
Yang harus diperhatikan ketika menggunakan GROUP BY. Jika menggunakan GROUP BY, semua field yang ingin ditampilkan dalam SELECT harus tercantum di GROUP BY.
• Contoh yang salah:
– SELECT jenis_transaksi, tanggal FROM transaksi GROUP BY jenis_transaksi;
– SELECT jenis_transaksi, tanggal FROM transaksi GROUP BY tanggal;

• Contoh yang benar:
– SELECT jenis_transaksi, tanggal FROM transaksi GROUP BY jenis_transaksi, tanggal;

5. HAVING
Merupakan pasangan dari GROUP BY, digunakan untuk membatasi kelompok yang ditampilkan:
• SELECT jenis_transaksi, tanggal FROM transaksi
GROUP BY jenis_transaksi, tanggal
HAVING jenis_transaksi = ‘kredit’;

Hasil yang sama bisa didapatkan dengan:
• SELECT jenis_transaksi, tanggal FROM transaksi
WHERE jenis_transaksi = ‘kredit’
GROUP BY jenis_transaksi, tanggal;

Yang harus diperhatikan :
• Jika menggunakan HAVING, maka pembatasan dilakukan setelah hasil dikelompokkan dalam GROUP BY.
• Jika menggunakan WHERE, maka pembatasan dilakukan sebelum hasil dikelompokkan dalam GROUP BY.
• Field(-field) yang disebut di HAVING harus ada di GROUP BY, atau berupa aggregate functions.
Contoh implementasi
• Contoh yang salah:
– SELECT jenis_transaksi, tanggal FROM transaksi
GROUP BY jenis_transaksi, tanggal
HAVING jumlah = 50000;

• Contoh yang benar:
– SELECT jenis_transaksi, tanggal FROM transaksi
WHERE jumlah = 50000
GROUP BY jenis_transaksi, tanggal;

Penggabungan GROUP BY dengan Aggregate
GROUP BY sangat cocok untuk aggregate functions. Dengan menggunakan GROUP BY, kita bisa mengelompokkan record-record dan menghitung min, max, count, sum, dan avg untuk masing-masing kelompok.
Contoh:
• SELECT kode_cabang, MIN(saldo), MAX(saldo), COUNT(*), SUM(saldo), AVG(saldo)
FROM rekening
GROUP BY kode_cabang;

• Bisa digabungkan dengan tabel join dan ORDER BY:
o SELECT nama_cabang, SUM(saldo)
FROM rekening NATURAL JOIN cabang_bank
GROUP BY nama_cabang
ORDER BY nama_cabang;

• Hasil di atas menampilkan total saldo untuk masing-masing cabang_bank.
• Perintah SQL di bawah menampilkan banyaknya nasabah yang dilayani oleh masing-masing cabang bank:
o SELECT nama_cabang, COUNT(DISTINCT id_nasabah)
FROM cabang_bank NATURAL JOIN rekening NATURAL JOIN nasabah_has_rekening
GROUP BY nama_cabang
ORDER BY nama_cabang;

• Contoh dengan HAVING:
o SELECT kode_cabang, SUM(saldo), COUNT(*)
FROM rekening
GROUP BY kode_cabang
HAVING SUM(saldo) >= 5000000
ORDER BY kode_cabang;

• Karena SUM(saldo) hanya bisa dihitung setelah hasil dikelompokkan dengan GROUP BY, maka kita harus menggunakan HAVING untuk membatasi hasil berdasarkan SUM(saldo) >= 5000000. Kita tidak bisa menggunakan WHERE.

 

sumber : dewankomputer

Cara Daftar Google Adsense Indonesia Agar Cepat Diterima

Google Adsense adalah salah satu program PPC (Pay Per Click) yang paling banyak digemari oleh ...

Learn more
Share This:Share on FacebookShare on Google+Tweet about this on TwitterShare on LinkedInPin on Pinterest

Leave a Reply

Your email address will not be published. Required fields are marked *