Tambahan 1

Tambahan

1. Tampilkan dosen banyaknya nilai ‘B’ nya lebih dari 70% (dari semua matakuliah yang dia ampu)

Pertama kita memerlukan data mengenai jumlah peserta pada suatu kelas kuliah. Lalu juga jumlah nilai B pada kelas kuliah tersebut. Nah, dari situ kita tinggal menghitung perbandingannya. Kita cari yang perbandingan banyak nilai B dan banyak pesertanya lebih dari 0.7 atau 70%..

Oke, mari kita cari banyak nilai B pada tiap kelas kuliah..

SELECT kodekuliah , nilai , COUNT(NILAI )AS BANYAKNILAIB

FROM peserta

WHERE NILAI=’B’

GROUP BY KODEKULIAH,NILAI ORDER BY `peserta`.`kodekuliah` ASC

1i

Terlihat pada gambar di atas banyak nilai B pada tiap kelas kuliah. Lalu kita cari banyak peserta tiap kelas kuliah. Cekidot!

SELECT kodekuliah, COUNT( kodekuliah ) AS BANYAKPESERTA

FROM peserta

GROUP BY kodekuliah

1ii

Selanjutnya, kita bandingkan banyak nilai B dengan banyak peserta, sekaligus dengan nip dosen.

SELECT dosen.nip, SUM(H2.BANYAKNILAI)B, SUM( H1.BANYAKPESERTA)

FROM dosen,kuliah,

(SELECT kodekuliah, COUNT( kodekuliah ) AS BANYAKPESERTA

FROM peserta

GROUP BY kodekuliah

) AS H1,

(SELECT kodekuliah, nilai, COUNT( NILAI ) AS BANYAKNILAIB

FROM peserta

WHERE NILAI = ‘B’

GROUP BY KODEKULIAH, NILAI

ORDER BY `peserta`.`kodekuliah` ASC

) AS H2

WHERE H1.KODEKULIAH = H2.KODEKULIAH

AND H2.BANYAKNILAIB / H1.BANYAKPESERTA > 0.7

AND kuliah.kodekuliah=H1.kodekuliah AND kuliah.nip=dosen.nip

GROUP BY dosen.nip

ORDER BY `H2`.`BANYAKNILAIB` ASC

Dan hasilnya, output dari query diatas kosong karena memang tidak ada nilai B yang berjumlah sampai 7 bahkan. Namun apabila kita mencoba mengganti syarat menjadi

…. AND H2.BANYAKNILAIB / H1.BANYAKPESERTA > 0.3 ….

maka akan ada 7 nip yang muncul..

1TAMBAH

Nah, setelah mencoba-coba mengganti syarat, query kita belum selesai. Kita masih harus menampilkan nama dosen yang membimbing kelas kuliah tersebut sekaligus menggabungkannya jadi satu. Berikut querynya

SELECT DOSEN.NAMA

FROM DOSEN, KULIAH, (

SELECT dosen.nip, SUM(H2.BANYAKNILAI)B, SUM( H1.BANYAKPESERTA)

FROM dosen,kuliah,

(SELECT kodekuliah, COUNT( kodekuliah ) AS BANYAKPESERTA

FROM peserta

GROUP BY kodekuliah

) AS H1,

(SELECT kodekuliah, nilai, COUNT( NILAI ) AS BANYAKNILAIB

FROM peserta

WHERE NILAI = ‘B’

GROUP BY KODEKULIAH, NILAI

ORDER BY `peserta`.`kodekuliah` ASC

) AS H2

WHERE H1.KODEKULIAH = H2.KODEKULIAH

AND H2.BANYAKNILAIB / H1.BANYAKPESERTA > 0.7

AND kuliah.kodekuliah=H1.kodekuliah AND kuliah.nip=dosen.nip

GROUP BY dosen.nip

ORDER BY `H2`.`BANYAKNILAIB` ASC

) AS NILAIB

WHERE NILAIB.KODEKULIAH = KULIAH.KODEKULIAH

AND DOSEN.NIP = KULIAH.NIP

GROUP BY DOSEN.NAMA

Query diatas menghasilkan output kosong karena alasan yang telah disebutkan di awal.

Leave a Reply