agregasi

5
AGREGASI dalam SQL 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: 1. MAX : mencari data terbesar dari sekelompok data 2. MIN : mencari data terkecil dari sekelompok data 3. COUNT : mencari cacah data (data NULL tidak akan dimasukkan dalam perhitungan, kecuali disebutkan secara khusus) 4. SUM : mencari jumlah dari sekumpulan data numeris 5. AVG : mencari rerata dari sekumpulan data numeris Sintaks SQL untuk melakukan pengelompokan adalah: 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: 1. 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' 2. 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. nim kodemk thnakademik nilai bobot 50 A1 1999/2000 C 2 50 A1 2000/2001 C 2 60 A1 2000/2001 B 3 50 A1 2001/2002 B 3 50 A2 2001/2002 B 3 60 A2 2002/2003 D 1 50 A2 2003/2004 A 4 50 A1 2004/2005 A 4

Upload: ahmad-azam-huda

Post on 28-Nov-2015

29 views

Category:

Documents


1 download

DESCRIPTION

Informasi tentang agregasi pada SQL, mencari tahu min max sum (operasi dasar)

TRANSCRIPT

Page 1: Agregasi

AGREGASI dalam SQL

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:1. MAX : mencari data terbesar dari sekelompok data2. MIN : mencari data terkecil dari sekelompok data3. COUNT : mencari cacah data (data NULL tidak akan dimasukkan dalam perhitungan,

kecuali disebutkan secara khusus)4. SUM : mencari jumlah dari sekumpulan data numeris5. AVG : mencari rerata dari sekumpulan data numeris

Sintaks SQL untuk melakukan pengelompokan adalah:

SELECT [daftar-kolom-non-agregasi,] daftar-kolom-agregasiFROM 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:

1. 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'

2. 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.

nim kodemk thnakademik nilai bobot

50 A1 1999/2000 C 2

50 A1 2000/2001 C 2

60 A1 2000/2001 B 3

50 A1 2001/2002 B 3

50 A2 2001/2002 B 3

60 A2 2002/2003 D 1

50 A2 2003/2004 A 4

50 A1 2004/2005 A 4

Page 2: Agregasi

(a) Agregasi berdasar satu kolom

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:

nim kodemk thnakademik nilai bobot

50 A1 1999/2000 C 2

50 A1 2000/2001 C 2

60 A1 2000/2001 B 3

50 A1 2001/2002 B 3

50 A2 2001/2002 B 3

60 A2 2002/2003 D 1

50 A2 2003/2004 A 4

50 A1 2004/2005 A 4

nim kodemk thnakademik nilai bobot

50 A1 1999/2000 C 2

50 A1 2000/2001 C 2

60 A1 2000/2001 B 3

50 A1 2001/2002 B 3

50 A2 2001/2002 B 3

60 A2 2002/2003 D 1

50 A2 2003/2004 A 4

50 A1 2004/2005 A 4

Page 3: Agregasi

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:

nim kodemk thnakademik nilai bobot

50 A1 1999/2000 C 2

50 A1 2000/2001 C 2

60 A1 2000/2001 B 3

50 A1 2001/2002 B 3

50 A2 2001/2002 B 3

60 A2 2002/2003 D 1

50 A2 2003/2004 A 4

50 A1 2004/2005 A 4

Page 4: Agregasi

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

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.

Page 5: Agregasi

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');