Anda di halaman 1dari 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 : men ari data terbesar dari sekelompok data !. M"# : men ari data terke il dari sekelompok data $. %&'#( : men ari a ah data )data #'LL tidak akan dimasukkan dalam perhitungan* ke uali disebutkan se ara khusus+ ,. S'M : men ari -umlah dari sekumpulan data numeris .. A/0 : men ari rerata dari sekumpulan data numeris Sintaks SQL untuk melakukan pengelompokan adalah: SELECT 1daftar2kolom2non2agregasi*3 daftar2kolom2agregasi FROM daftar2tabel 1WHERE kondisi2re ord2dalam2tabel3 1GROUP BY daftar2kolom2agregasi3 1HAVING kodisi2filter2hasil2agregasi3 1ORDER BY daftar2kolom2pengurutan3 'ntuk memper-elas mekanisme pengelompokan* kita gunakan ontoh tabel P berikut* yang bisa anda dapatkan dengan menggunakan SQL 4uery pada halaman terakhir bagian ini:
nim 50 50 60 50 50 60 50 50 kodemk A1 A1 A1 A1 A2 A2 A2 A1 thnakademik nilai bobot 1999/2000 2000/2001 2000/2001 2001/2002 2001/2002 2002/2003 2003/2004 2004/2005 C C B B B D A A 2 2 3 3 3 1 4 4

1. Penggunaan fungsi agregasi tanpa pengelompokan berarti melakukan agregasi dari seluruh data. S5L5%( ma6)thnakademik+ as thnambilterakhir 78&M P akan mengambil tahunakademik terbesar yaitu 9!::,;!::.9 !. 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.

)a+ Agregasi berdasar satu kolom S5L5%( ma6)thnakademik+* nilai 78&M P 08&'P B< nilai akan membentuk kelompok seperti gambar di ba=ah ini:
nim 50 50 60 50 50 60 50 50 kodemk A1 A1 A1 A1 A2 A2 A2 A1 thnakademik nilai 1999/2000 2000/2001 2000/2001 2001/2002 2001/2002 2002/2003 2003/2004 2004/2005 C C B B B D A A bobot 2 2 3 3 3 1 4 4

sehingga hasil dari 4uery di atas adalah:

)b+ Agregasi berdasar dua kolom S5L5%( ma6)thnakademik+* nim*kodemk 78&M P 08&'P B< nim*kodemk akan membentuk kelompok seperti gambar di ba=ah ini:
nim 50 50 60 50 50 60 50 50 kodemk A1 A1 A1 A1 A2 A2 A2 A1 thnakademik nilai 1999/2000 2000/2001 2000/2001 2001/2002 2001/2002 2002/2003 2003/2004 2004/2005 C C B B B D A A bobot 2 2 3 3 3 1 4 4

sehingga hasil dari 4uery di atas adalah:

) + Agregasi berdasar tiga kolom. S5L5%( ma6)thnakademik+* nim*kodemk*nilai 78&M P 08&'P B< nim*kodemk*nilai akan membentuk kelompok seperti gambar di ba=ah ini:
nim 50 50 60 50 50 60 50 50 kodemk A1 A1 A1 A1 A2 A2 A2 A1 thnakademik nilai 1999/2000 2000/2001 2000/2001 2001/2002 2001/2002 2002/2003 2003/2004 2004/2005 C C B B B D A A bobot 2 2 3 3 3 1 4 4

sehingga hasil dari 4uery di atas adalah:

%A(A(A#: S5M'A >&L&M #&# 7'#0S" A0850AS" <A#0 ?"S5B'(>A# ?" B5LA>A#0 >LA'SA SELECT @A8'S ?"S5B'(>A# ?" ?ALAM >LA'SA GROUP BY* B"LA ("?A> MA>A A>A# (58AA?" >5SALA@A#* BA"> (58?5(5>S" S5BA0A" >5SALA@A# S"#(A>S A(A'P'# >5SALA@A# "#7&8MAS" @AS"L Q'58< Perhatikan gambar di ba=ah ini* bandingkan dengan data yang sebenarnya. >olom nilai akan tidak sesuai isinya )di dalam MySQL+. Sedangkan untuk ?BMS seperti &ra le* pernyataan seperti itu akan dianggap se ara sintaks tidak Balid.

SQL untuk membentuk tabel P


CREATE TABLE P ( nim varchar(3) , kodemk varchar(3) , thnakademik varchar(10) , nilai char(1) ) IN IN IN IN IN IN IN IN ERT ERT ERT ERT ERT ERT ERT ERT INT! INT! INT! INT! INT! INT! INT! INT! P P P P P P P P (nim, (nim, (nim, (nim, (nim, (nim, (nim, (nim, kodemk, kodemk, kodemk, kodemk, kodemk, kodemk, kodemk, kodemk, thnakademik, thnakademik, thnakademik, thnakademik, thnakademik, thnakademik, thnakademik, thnakademik, nilai) nilai) nilai) nilai) nilai) nilai) nilai) nilai) "AL#E "AL#E "AL#E "AL#E "AL#E "AL#E "AL#E "AL#E ($%0$, ($%0$, ($%0$, ($*0$, ($%0$, ($%0$, ($*0$, ($%0$, $A1$, $A1$, $A1$, $A1$, $A1$, $A($, $A($, $A($, $1&&&'(000$, $(000'(001$, $(001'(00($, $(000'(001$, $(00+'(00%$, $(001'(00($, $(00('(003$, $(003'(00+$, $C$)) $C$)) $B$)) $B$)) $A$)) $B$)) $,$)) $A$))

Anda mungkin juga menyukai