Query SQL Untuk Menampilkan Index Prestasi (IP) Per Semester
June 10th, 2009 | by rosihanari |
Cetak Artikel Ini
Bagi Anda yang sedang membuat sistem informasi akademik dan merasa kesulitan dengan bagaimana cara menampilkan nilai Index Prestasi (IP) mahasiswa untuk setiap semesternya, mudah-mudahan artikel ini berguna.
Ide menulis artikel ini muncul sewaktu perjalanan menuju my campus
Mohon maaf kepada pengunjung setia blog ini, selama beberapa hari yang cukup lama saya tidak mengupdate artikel blog karena kesibukan saya, baik di rumah maupun di kampus. Waduh… serasa urusan gak pernah selesai-selesai. Ya… itulah urusan duniawi
Nah.. sekarang fokus ke urusan akhirat, yaitu dakwah melalui ilmu yang saya bagi (meski yang didakwahkan bukan ilmu agama), It doesn’t matter
OK… dalam artikel ini akan saya coba kupas 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
CREATE TABLE mk ( kodeMK varchar(5), namaMK varchar(20), sks int(11), PRIMARY KEY(kodeMK) )
CREATE TABLE ambilmk ( nim varchar(5), kodeMK varchar(5), nilai float, smt varchar(10), tahun varchar(9), PRIMARY KEY (nim, kodeMK, smt, tahun), )
disertai dengan record untuk masing-masing tabel sbb:
INSERT INTO `ambilmk` VALUES ('M002', 'MK01', '3', 'GANJIL', '2008/2009');
INSERT INTO `ambilmk` VALUES ('M002', 'MK02', '4', 'GANJIL', '2008/2009');
INSERT INTO `ambilmk` VALUES ('M002', 'MK03', '3', 'GENAP', '2008/2009');
INSERT INTO `ambilmk` VALUES ('M002', 'MK04', '4', 'GENAP', '2008/2009');
INSERT INTO `ambilmk` VALUES ('M002', 'MK05', '4', 'GANJIL', '2009/2010');
INSERT INTO `mk` VALUES ('MK01', 'DATABASE', '3');
INSERT INTO `mk` VALUES ('MK02', 'PEMROGRAMAN DASAR', '2');
INSERT INTO `mk` VALUES ('MK03', 'PEMROGRAMAN WEB', '4');
INSERT INTO `mk` VALUES ('MK04', 'OOP', '3');
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?
SELECT smt, tahun, sum(sks * nilai)/sum(sks) as IP FROM ambilmk, mk WHERE ambilmk.kodemk = mk.kodemk AND nim = 'M002' 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 ingin mendownload beberapa tool programming 100% gratis?
Silakan download di FREE PROGRAMMING TOOLS.
atau ingin berdonasi untuk pengembangan blog ini cukup dengan $1 via Paypal?
Beberapa artikel terkait
- Ide Membuat Script Grafik PHP Untuk Menampilkan Indeks Prestasi Mahasiswa (Studi Kasus)
- Perintah SQL Menampilkan Nilai Matakuliah Terbaik (Studi Kasus Akademik)
- Cara Membuat Query SQL Untuk Relasi Tabel
- Penggunaan Subquery dalam Query SQL (Bag. 2)
- Penggunaan Subquery dalam Query SQL (Bag. 1)
- Mengubah Tabel Tipe MyISAM ke InnoDB
- Perintah SQL (SELECT) untuk Multi Tabel (Bag. 1)
- Perintah SQL (SELECT) untuk Multi Tabel (Bag. 2)
- Script PHP untuk Menampilkan Siswa Belum Bayar SPP (A Study Case)
- Penggunaan Function substring() di Query SQL
Share this article on:
Kata kunci: query - SQL -







mantep tenan
bagus bgt tuh mas…
sekalian studi kasus tolong di perbanyak dunk kaya penggunaan CASE.
makasih buat tutuoral nya saya kebetulan baru belajar mysql…tolong saran dan bimbingannya ya
makasih ya mas buat tutorial nay saya lagi belajar tolong bimbingannya..terimaksih
makasih mas atas tutorialnya
trims ya atas artikelnya dapat bantu saya buat selesaikan TA, buat yang banyak lagi, semoga bermanfaat
Prtnyaan sya pd March 24, 2010 at 2:16 pm:
Mas Rosihan Ari, mhn bntuannya. Sya mau buat grafik chart Statistik dengan IP Smster (IPS) dan IP Kumulatif (IPK) dengan PHP, tapi dibuatnya per fakultas dan jurusan. Bgmn ya caranya? Mhn pncerahannya.
Jwbn dr Anda:
March 25, 2010 at 2:49 pm
@agus: tinggal mainin saja query sql nya mas… semua data tergantung query nya.
Mas Rosihan Ari, mksud tinggal mainin saja query sql nya… dan semua data tergantung query nya,bgmn Mas?
Tlg dong Mas,sya dberi pnjelasan yg detail.Krn sya Newbie PHP dan MySQL.
Sngt trimaksih skali klau sya mau dbantu.
Program yg akn sya bwt ini akn sya gunakan utk kpentingan umat.
Dtunggu jwbn pncerahannya!
Pak, mohon bantuannya.. Maaf ini diluar topik IPK, karena saya belum kuliah..
tapi masih berkaitan..
Misal saya mempunyai 3 buah field database berupa ‘item’, ‘qty’ dan ‘price’. Dan misal ada 3 data dari masing-masing field tsb, sbb:
items | qty | price
——————————–
part a | 10 | Rp. 5.000
part b | 5 | Rp. 1.000
reparasi | | Rp. 500
Dari data di atas didapat ‘TotalPrice’: Rp. 55.500;
Pertanyaannya bagaimana query yang benar apabila salah satu field ‘qty’ tidak diisi untuk mendapatkan ‘TotalPrice’ tsb, bila kita ketahui ada data kosong (jasa reparasi tidak ditulis dalam qty). Saya sudah mencoba dengan “SUM(qty*price)”, hasilnya adalah 55000… apa bisa dibuat IF Statement spt pada php agar tidak mengalikan field yg kosong? sebelumnya saya ucapkan terimakasih.
Oh.. sudah bisa Pak dengan query:
[code]
sum(IFNULL(qty,1)*price)
[/code]
terimakasih sebelumnya
Bagus banget, Om
Ada contoh aplikasi akademis yang lengkapnya, gak? kalau bisa dimulai dari pendaftaran mahasiswa baru, cetak Kartu Mahasiswa dengan fotonya, pengisian KRS online, sampai pencetakan nilai (KHS). Kalau ada berapa harganya, om? buat skripsi nih.
@erta muharlis: lebih baik bikin sendiri mas…. saya yakin punya Anda lebih baik dari buatan saya…