Beli Modem Wavecom Untuk SMS Gateway. FREE E-book Gammu + FREE Ongkos kirim !!
Ingin Punya Script SMS Gateway dengan PHP + MySQL?

Dapatkan segera phpSMS V3.0, software SMS Gateway multi fungsi berbasis web buatan saya sendiri untuk keperluan Anda.
[Info Lengkap...]

Query SQL Untuk Menampilkan Index Prestasi (IP) Per Semester


June 10th, 2009 | by rosihanari | Cetak Artikel Ini 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

Photobucket

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

Photobucket

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.

VN:F [1.9.3_1094]
Rating: 8.0/10 (2 votes cast)
Query SQL Untuk Menampilkan Index Prestasi (IP) Per Semester, 8.0 out of 10 based on 2 ratings
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


Share this article on:

Kata kunci: query - SQL -


Ada 11 komentar dalam artikel ini.

  1. harry says:

    bagus bgt tuh mas…
    sekalian studi kasus tolong di perbanyak dunk kaya penggunaan CASE.

  2. raihan says:

    makasih buat tutuoral nya saya kebetulan baru belajar mysql…tolong saran dan bimbingannya ya

  3. raihan says:

    makasih ya mas buat tutorial nay saya lagi belajar tolong bimbingannya..terimaksih

  4. andi purnomo says:

    makasih mas atas tutorialnya

  5. gunawan says:

    trims ya atas artikelnya dapat bantu saya buat selesaikan TA, buat yang banyak lagi, semoga bermanfaat

  6. 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!

  7. gesta says:

    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.

  8. gesta says:

    Oh.. sudah bisa Pak dengan query:
    [code]
    sum(IFNULL(qty,1)*price)
    [/code]
    terimakasih sebelumnya

  9. erta muharlis says:

    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.

  10. rosihanari says:

    @erta muharlis: lebih baik bikin sendiri mas…. saya yakin punya Anda lebih baik dari buatan saya…



Tolong beri komentar donk!

Komentar Anda akan berguna untuk kemajuan blog ini.


Mohon maaf, komentar yang menggunakan email palsu atau komentar bernada negatif atau cemooh secara otomatis akan terhapus karena dianggap spam dan tidak akan tampil dalam daftar komentar.

Dimohon jangan pula memasukkan code program dalam bentuk apapun ke dalam komentar karena akan dianggap spam.

*
To prove you're a person (not a spam script), type the security word shown in the picture. Click on the picture to hear an audio file of the word.
Click to hear an audio file of the anti-spam word