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
)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
) + 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
%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.