Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save hidayat365/4144596 to your computer and use it in GitHub Desktop.
Save hidayat365/4144596 to your computer and use it in GitHub Desktop.
Fungsi Transkrip Dengan Output Mata Kuliah Hanya dengan Nilai Terbaik dari KHS
CREATE OR REPLACE FUNCTION transkrip(CHAR)
RETURNS TABLE(nim CHAR, kode_mk CHAR, nama_mk CHAR, nilai CHAR) AS
$$
BEGIN
RETURN QUERY
SELECT tmp1.nim, tmp1.kode_mk, tmp1.nama_mk, tmp1.nilai
FROM (
SELECT A.nim, A.kode_mk, B.nama_mk, A.nilai
, row_number() over(partition by A.kode_mk order by A.nilai) baris
FROM khs A JOIN mata_kuliah B ON A.kode_mk = B.kode_mk
WHERE A.nim = $1
) tmp1
WHERE baris = 1;
END;
$$
LANGUAGE plpgsql;
@Imam86
Copy link

Imam86 commented Nov 25, 2012

Begitu ya.. saya cukup mengerti deh sekarang.. :-)

Oiya.. ini sebenarnya tugas kuliah dari masa lalu, dan saya gagal. :-(
Tapi saya belum menyerah, masih mau cari jawabannya (hee.. seperti ada rasa dendam).
Dosennya juga tidak kasih jawabannya. Cuma dikasih clue pake IF dan LOOP. Muter-muter menyelesaikan soal ini, tapi alhasil nilai SQL saya kemarin jeblok banget.
Hehehehe.. ribet deh.. :-D

Dan kalau udah ketemu jawabannya seperti ini, ada niat nantinya fungsi ini mau saya expand lagi. Hee.. coba-coba sendiri aja, tiba-tiba jadi kepikiran. (yang ini bukan tugas kuliah lho, Mas.. cuma pengen explore fungsi di SQL aja).

Nilai dari mata kuliah yang memakai kurikulum lama (misal: 2007) akan dikonversi ke nilai dengan mata kuliah di kurikulum baru (misal: 2012), jadi kolom nilai mata kuliah di kurikulum baru akan mengambil kolom nilai dari mata kuliah di kurikulum lama.
Misal, di kurikulum 2007, ada mata kuliah Pancasila = nilai B, lalu mata kuliah tersebut dikonversi ke kurikulum 2012 menjadi Kewarganegaraan, maka mata kuliah Kewarganegaraan = nilai B.

Dan ada beberapa kasus lainnya, yang saya ciptakan sendiri.
Hehehehe.. saya kadang doyan bikin soal sendiri, tapi malah bingung dan stress saat mau buat jawabannnya.
:-p

Jawaban dari Mas bisa buat saya jadikan pondasi untuk membuat fungsi berikutnya.
Hmm.. saya belum begitu mengerti tentang coding prosedural, tapi memang bekerja dengan bahasa pemrograman database berbeda dengan bahasa pemrograman lainnya.

Terima kasih, Mas..
Mudah-mudahan tidak kapok memberikan pelajaran bagi newbie seperti saya ini.
:-)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment