Agregasi data base
Agregasi dalam SQL merupakan proses untuk mendapatkan nilai dari sekumpulan data yang telah
dikelompokkan. Pengelompokan data didasarkan pada kolom atau kombinasi kolom yang dipilih.
Beberapa fungsi untuk agregasi adalah:
dikelompokkan. Pengelompokan data didasarkan pada kolom atau kombinasi kolom yang dipilih.
Beberapa fungsi untuk agregasi adalah:
- MAX : mencari data terbesar dari sekelompok data
- MIN : mencari data terkecil dari sekelompok data
- COUNT : mencari cacah data (data NULL tidak akan dimasukkan dalam perhitungan,kecuali disebutkan secara khusus)
- SUM : mencari jumlah dari sekumpulan data numeris
- AVG : mencari rerata dari sekumpulan data numeris
SELECT [daftar-kolom-non-agregasi,] daftar-kolom-agregasi
FROM daftar-tabel
[WHERE kondisi-record-dalam-tabel]
[GROUP BY daftar-kolom-agregasi]
[HAVING kodisi-filter-hasil-agregasi]
[ORDER BY daftar-kolom-pengurutan]
Untuk memperjelas mekanisme pengelompokan, kita gunakan contoh tabel P berikut, yang bisa
anda dapatkan dengan menggunakan SQL query pada halaman terakhir bagian ini:
anda dapatkan dengan menggunakan SQL query pada halaman terakhir bagian ini:
- Penggunaan fungsi agregasi tanpa pengelompokan berarti melakukan agregasi dari seluruh
data. SELECT max(thnakademik) as thnambilterakhir FROM P (akan mengambil tahunakademik terbesar yaitu '2004/2005') - Penggunaan fungsi agregasi dengan pengelompokan berdasar pada kolom berarti
melakukan pengelompokan dengan aturan dasar record-record yang memiliki nilai sama
untuk kolom tersebut sebagai satu kelompok, dan bila nilai kolom pengelompokan
tidak sama maka berada kelompok yang berbeda. Selanjutnya agregasi akan dilakukan
untuk masing-masing kelompok data.
SELECT max(thnakademik), nilai FROM P GROUP BY nilai
akan membentuk kelompok seperti gambar di bawah ini:
sehingga hasil dari query di atas adalah:
( b ) Agregasi berdasar dua kolom
SELECT max(thnakademik), nim,kodemk FROM P GROUP BY
nim,kodemk
akan membentuk kelompok seperti gambar di bawah ini:
sehingga hasil dari query di atas adalah:
( c ) Agregasi berdasar tiga kolom.
SELECT max(thnakademik), nim,kodemk,nilai FROM P GROUP BY
nim,kodemk,nilai
akan membentuk kelompok seperti gambar di bawah ini:
sehingga hasil dari query di atas adalah:
CATATAN:
SEMUA KOLOM NON FUNGSI AGREGASI YANG DISEBUTKAN DI BELAKANG KLAUSA
SELECT HARUS DISEBUTKAN DI DALAM KLAUSA GROUP BY, BILA TIDAK MAKA
AKAN TERJADI KESALAHAN, BAIK TERDETEKSI SEBAGAI KESALAHAN SINTAKS
ATAUPUN KESALAHAN INFORMASI HASIL QUERY
SEMUA KOLOM NON FUNGSI AGREGASI YANG DISEBUTKAN DI BELAKANG KLAUSA
SELECT HARUS DISEBUTKAN DI DALAM KLAUSA GROUP BY, BILA TIDAK MAKA
AKAN TERJADI KESALAHAN, BAIK TERDETEKSI SEBAGAI KESALAHAN SINTAKS
ATAUPUN KESALAHAN INFORMASI HASIL QUERY
Perhatikan gambar di bawah ini, bandingkan dengan data yang sebenarnya. Kolom nilai
akan tidak sesuai isinya (di dalam MySQL). Sedangkan untuk DBMS seperti Oracle,
pernyataan seperti itu akan dianggap secara sintaks tidak valid.
SQL untuk membentuk tabel P
CREATE TABLE P (
nim varchar(3) ,
kodemk varchar(3) ,
thnakademik varchar(10) ,
nilai char(1)
)
INSERT INTO P (nim, kodemk, thnakademik, nilai) VALUES ('50', 'A1', '1999/2000', 'C');
INSERT INTO P (nim, kodemk, thnakademik, nilai) VALUES ('50', 'A1', '2000/2001', 'C');
INSERT INTO P (nim, kodemk, thnakademik, nilai) VALUES ('50', 'A1', '2001/2002', 'B');
INSERT INTO P (nim, kodemk, thnakademik, nilai) VALUES ('60', 'A1', '2000/2001', 'B');
INSERT INTO P (nim, kodemk, thnakademik, nilai) VALUES ('50', 'A1', '2004/2005', 'A');
INSERT INTO P (nim, kodemk, thnakademik, nilai) VALUES ('50', 'A2', '2001/2002', 'B');
INSERT INTO P (nim, kodemk, thnakademik, nilai) VALUES ('60', 'A2', '2002/2003', 'D');
INSERT INTO P (nim, kodemk, thnakademik, nilai) VALUES ('50', 'A2', '2003/2004', 'A');
Semoga bermanfaat yak🙂
Komentar
Posting Komentar