Anda di halaman 1dari 3

Query SQL Untuk Menampilkan Index Prestasi (IP) Per

Semester
bagaimana membuat query SQL untuk menampilkan Index Prestasi mahasiswa untuk setiap
semester yang telah ditempuhnya. Query ini pasti terdapat dalam sebuah sistem informasi
akademik untuk menginformasikan track record akademik seorang mahasiswa yang telah
menempuh perkuliahan.

Misalkan kita memiliki tabel matakuliah (‘mk’) dan pengambilan matakuliah (‘ambilmk’) dalam
database sebagai berikut

view sourceprint?
1.CREATE TABLE mk (
2.  kodeMK varchar(5),
3.  namaMK varchar(20),
4.  sks int(11),
5.  PRIMARY KEY(kodeMK)
6.)
view sourceprint?
1.CREATE TABLE ambilmk (
2.  nim varchar(5),
3.  kodeMK varchar(5),
4.  nilai float,
5.  smt varchar(10),
6.  tahun varchar(9),
7.  PRIMARY KEY  (nim, kodeMK, smt, tahun),
8.)

disertai dengan record untuk masing-masing tabel sbb:

view sourceprint?
1.INSERT INTO `ambilmk` VALUES ('M002', 'MK01', '3', 'GANJIL', '2008/2009');
2.INSERT INTO `ambilmk` VALUES ('M002', 'MK02', '4', 'GANJIL', '2008/2009');
3.INSERT INTO `ambilmk` VALUES ('M002', 'MK03', '3', 'GENAP', '2008/2009');
4.INSERT INTO `ambilmk` VALUES ('M002', 'MK04', '4', 'GENAP', '2008/2009');
5.INSERT INTO `ambilmk` VALUES ('M002', 'MK05', '4', 'GANJIL', '2009/2010');
view sourceprint?
1.INSERT INTO `mk` VALUES ('MK01', 'DATABASE', '3');
2.INSERT INTO `mk` VALUES ('MK02', 'PEMROGRAMAN DASAR', '2');
3.INSERT INTO `mk` VALUES ('MK03', 'PEMROGRAMAN WEB', '4');
4.INSERT INTO `mk` VALUES ('MK04', 'OOP', '3');
5.INSERT INTO `mk` VALUES ('MK05', 'PEMROGRAMAN VISUAL', '3');

Keterangan:

Di dalam tabel ‘ambilmk’ terdapat field ‘smt’ yang digunakan untuk memberi keterangan pada
semester apa (genap/ganjil) si mahasiswa mengambil matakuliah tersebut. Sedangkan field
‘tahun’ menunjukkan tahun ajarannya.
OK… sekarang bagaimana dengan bentuk query SQL nya. Untuk mencari IP, tentu kita harus
tahu dulu formulanya, yaitu

IP = sum(sks x nilai)/sum(sks)

atau hasil dari penjumlahan sks x nilai matakuliah yang telah diambil dibagi dengan jumlah sks
matakuliah tersebut.

Nah… sekarang kita terapkan formula tersebut ke dalam query SQL. Dalam hal ini kita akan
menampilkan hasil querynya dalam bentuk SMT, TAHUN, IP.

But… tunggu dulu. Field ‘nilai’ ada di tabel ‘ambilmk’ sedangkan field ‘sks’ ada di tabel ‘mk’.
So… gimana donk? …. Lho apanya yang gimana? kan kita bisa relasikan kedua tabel melalui
field ‘kodemk’. So… no problem kan?

view sourceprint?
1.SELECT smt, tahun, sum(sks * nilai)/sum(sks) as IP
2.FROM ambilmk, mk
3.WHERE ambilmk.kodemk = mk.kodemk AND nim = 'M002'
4.GROUP BY tahun, smt

Query SQL di atas akan mencoba menampilkan IP mahasiswa bernim ‘M002′ untuk setiap
semester dan tahun ajarannya.

Mungkin Anda bertanya, mengapa dalam query SQL perlu diberikan GROUP BY tahun, smt?
Ya… karena query ini tujuannya adalah menampilkan IP setiap tahun dan semesternya. Sehingga
perhitungan nilai untuk menghasilkan IP juga harus perlu dikelompokkan berdasarkan tahun dan
semesternya.

Hasil query di atas akan menghasilkan output seperti di bawah ini

Trus.. mungkin Anda bertanya lagi, apakah perintah ‘GROUP BY tahun, smt’ nya harus seperti
itu? Maksudnya, bisakah dibalik menjadi ‘GROUP BY smt, tahun’? Jawabannya adalah ‘NO
PROBLEM’. Hasilnya tetap sama, namun yang berbeda adalah tampilannya saja. Bila Anda
menggunakan ‘GROUP BY smt, tahun’ maka pengelompokan diprioritaskan pada semester,
sehingga dalam tampilannya menjadi seperti di bawah ini
Anda lihat bahwa pada hasil di atas, jika digunakan ‘GROUP BY smt, tahun‘ maka nama
semester yang sama akan mengumpul menjadi satu (dalam baris yang berurutan).

Sekarang Anda coba bandingkan dengan gambar pertama yang merupakan hasil dari penggunaan
‘GROUP BY tahun, smt‘. Dalam gambar tersebut tampak bahwa tahun yang sama akan
mengumpul menjadi satu (dalam baris yang berurutan). Nah.. tentunya tampilan yang lebih baik
adalah tampilan pada gambar pertama di atas yang menggunakan ‘GROUP BY tahun, smt‘.

OK.. mudah-mudahan sedikit artikel ini berguna buat Anda yang sedang belajar SQL maupun
yang sedang membuat sistem informasi akademik.

Anda mungkin juga menyukai