Contoh DML
>>1. tampilkan mhs yang
belum pernah mengambil frs sama sekali
select nrp,nama from
db_akademik.mahasiswa mhs where not exists (select '^_^' from db_akademik.frs
where mhs.nrp=db_akademik.frs.nrp ) ;
>>2. tampilkan
matakuliah yang tidak ditawarkan pada tahun ajaran 2001
select * from matakuliah mk where not
exists(select '*O*' from mk_tawar twr where mk.id_mk=twr.id_mk and
twr.tahun='2001')
>>2.5 tampilkan
matakuliah yang diulang
SELECT mk.id_mk,
mk.mata_kuliah
FROM db_akademik.matakuliah
mk, (SELECT distinct id_mk from (SELECT id_mk from db_akademik.frs group by
nrp, id_mk having count(*)>1)) ngulang
WHERE ngulang.id_mk=mk.id_mk
atau <tp cepet yg
diatas>
SELECT distinct frs.id_mk,
mk.mata_kuliah from db_akademik.frs frs, db_akademik.matakuliah mk
where frs.id_mk=mk.id_mk
group by frs.nrp, frs.id_mk,
mk.mata_kuliah
having count(*)>1
2.75 tampilkan ips pertahun
ajaran, semester
>>3. tampilkan transkip
matakuliah,jika ada matakuliah yang diambil beberapa kali, diambil nilai yang
terbaik untuk nrp = 5100100004
SELECT frs.id_mk,
mk.mata_kuliah, frs.tahun, decode(frs.semester, 1, 'GASAL', 'GENAP') semester, frs.nilai_huruf
FROM (SELECT id_mk,
konversi2(max(konversi(nilai_huruf))) nilai_huruf FROM db_akademik.frs
WHERE nrp
= '5100100004'
GROUP BY
id_mk) mk_ambil, db_akademik.frs, db_akademik.matakuliah mk
WHERE frs.id_mk=mk_ambil.id_mk
AND mk.id_mk=frs.id_mk AND frs.nilai_huruf=mk_ambil.nilai_huruf AND frs.nrp='5100100004'
ORDER BY
tahun,semester,nilai_huruf;
>>4. tampilkan transkip
matakuliah,
jika ada matakuliah yang diambil beberapa
kali,
diambil yang terakhir untuk nrp = 5100100004
SELECT mk_akhir.id_mk,
matakuliah.mata_kuliah, substr(mk_akhir.th_sem, 1, 4) tahun,
decode(substr(mk_akhir.th_sem,5,1),1,'GASAL','GENAP') semester, frs.nilai_huruf
FROM (SELECT id_mk, max(tahun||semester) th_sem
FROM frs
WHERE
nrp='5100100004'
GROUP BY
id_mk) mk_akhir, frs, matakuliah
WHERE frs.id_mk=mk_akhir.id_mk AND
frs.tahun=substr(mk_akhir.th_sem, 1, 4) AND
frs.semester=substr(mk_akhir.th_sem,5,1) AND matakuliah.id_mk=mk_akhir.id_mk
AND frs.nrp='5100100004'
ORDER BY tahun,semester,nilai_huruf;
>>5. Tampilkan NRP,NAMA,
IPK masing masing mahasiswa
SELECT mk_akhir.nrp,
mahasiswa.nama, (sum(konversi(nilai_huruf)*matakuliah.sks)/sum(matakuliah.sks))
IPK
FROM (SELECT nrp,id_mk,max(tahun||semester) th_sem
FROM frs
GROUP BY
nrp,id_mk) mk_akhir, frs, matakuliah, mahasiswa
WHERE frs.nrp=mk_akhir.nrp AND
mk_akhir.id_mk=frs.id_mk AND frs.tahun=substr(mk_akhir.th_sem,1,4) AND
frs.semester=substr(mk_akhir.th_sem,5,1) AND matakuliah.id_mk=frs.id_mk AND
mahasiswa.nrp=frs.nrp
GROUP BY mk_akhir.nrp, mahasiswa.nama
6. Ranking Top 3 IPK Mahasiswa
perangkatan
select rownum, nrp, nama, ipk
from (SELECT mk_akhir.nrp, mahasiswa.nama,
(sum(konversi(nilai_huruf)*matakuliah.sks)/sum(matakuliah.sks)) IPK
FROM (SELECT nrp,id_mk,max(tahun||semester) th_sem
FROM frs
GROUP BY
nrp,id_mk) mk_akhir, frs, matakuliah, mahasiswa
WHERE frs.nrp=mk_akhir.nrp AND
mk_akhir.id_mk=frs.id_mk AND frs.tahun=substr(mk_akhir.th_sem,1,4) AND
frs.semester=substr(mk_akhir.th_sem,5,1) AND matakuliah.id_mk=frs.id_mk AND
mahasiswa.nrp=frs.nrp
AND mahasiswa.nrp like '5102%'
GROUP BY mk_akhir.nrp, mahasiswa.nama
order by ipk desc)
where rownum <= 3
7. Ranking top 10 IPK
Mahasiswa semua
select rownum, nrp, nama, ipk from ( SELECT
mk_akhir.nrp, mahasiswa.nama, (sum(konversi(nilai_huruf)*matakuliah.sks)/sum(matakuliah.sks))
IPK
FROM (SELECT nrp,id_mk,max(tahun||semester) th_sem
FROM frs
GROUP BY
nrp,id_mk) mk_akhir, frs, matakuliah, mahasiswa
WHERE frs.nrp=mk_akhir.nrp AND
mk_akhir.id_mk=frs.id_mk AND frs.tahun=substr(mk_akhir.th_sem,1,4) AND
frs.semester=substr(mk_akhir.th_sem,5,1) AND matakuliah.id_mk=frs.id_mk AND
mahasiswa.nrp=frs.nrp
GROUP BY mk_akhir.nrp, mahasiswa.nama
order by ipk desc)
where rownum<=10
8. rangking rata-rata IPK
perangkatan
9. Rangking Nilai terbaik
permata kuliah per kelas
pada Th Ajaran 2001
10 Rangking Nilai perdosen
pada tahun ajaran 2001
>>11 Jumlah Total
mahasiswa tiap matakuliah pertahun ajaran
>>12 mahasiswa u/ tiap
tahun ajaran dan semester yang
IPS tidak pernah < 3.2
>>13 Cari Mhs Yang Tidak
Pernah Mengulang dan Nilainya > C
14 Tampilkan Mhs yang IPSnya
selama 2 kali mduduki peringkat
top 5 dalam angkatannya
15 Tampilkan 3 mata kuliah, nama dosen, th_ajaran, semester yang
rata-rata nilainya paling kecil tiap tahun
ajaran
>>16 tampilkan mahasiswa
yang ngulang tapi tambah jelek
>>17. tampilkan crostab
untuk
nrp ips_2001_1 ips_2001_2
.... ips_2003_1 ips_2003_2
-------------------------------------------------------------
>>18 TAMPILKAN JUMLAH
IPS PERANGKATAN TADA TAHUN AJARAN 2002 SEMESTER 2
ANGKATAN IPS<2.0 IPS>2.0-2.5 IPS>2.5-3.0 IPS>3.0-3.5
IPS>3.5
--------------------------------------------------------------------
1. SELECT nrp, nama FROM mahasiswa
WHERE nrp NOT IN (SELECT nrp FROM frs);
2. SELECT id_mk, mata_kuliah FROM matakuliah
WHERE id_mk NOT IN (SELECT DISTINCT id_mk
FROM mk_tawar WHERE tahun='2001');
2.5 SELECT matakuliah.id_mk, matakuliah.mata_kuliah
FROM matakuliah, (SELECT DISTINCT id_mk
FROM frs
GROUP BY nrp, id_mk
HAVING count(*)>1) ngulang
WHERE ngulang.id_mk=matakuliah.id_mk;
3. SELECT frs.id_mk, mk.mata_kuliah, frs.tahun,
decode(frs.semester, 1, 'GASAL', 'GENAP') semester, frs.nilai_huruf
FROM (SELECT id_mk,
konversi2(max(konversi(nilai_huruf))) nilai_huruf
FROM frs
WHERE nrp
= '5100100004'
GROUP BY
id_mk) mk_ambil, frs, matakuliah mk
WHERE frs.id_mk=mk_ambil.id_mk AND mk.id_mk=frs.id_mk
AND frs.nilai_huruf=mk_ambil.nilai_huruf AND frs.nrp='5100100004'
ORDER BY tahun, semester, id_mk;
4. SELECT mk_akhir.id_mk, matakuliah.mata_kuliah,
substr(mk_akhir.th_sem, 1, 4) tahun,
decode(substr(mk_akhir.th_sem,5,1),1,'GASAL','GENAP') semester, frs.nilai_huruf
FROM (SELECT id_mk, max(tahun||semester) th_sem
FROM frs
WHERE
nrp='5100100004'
GROUP BY
id_mk) mk_akhir, frs, matakuliah
WHERE frs.id_mk=mk_akhir.id_mk AND
frs.tahun=substr(mk_akhir.th_sem, 1, 4) AND
frs.semester=substr(mk_akhir.th_sem,5,1) AND matakuliah.id_mk=mk_akhir.id_mk
AND frs.nrp='5100100004'
ORDER BY tahun, semester, id_mk;
5. SELECT mk_akhir.nrp, mahasiswa.nama,
(sum(konversi(nilai_huruf)*matakuliah.sks)/sum(matakuliah.sks)) IPK
FROM (SELECT nrp,id_mk,max(tahun||semester) th_sem
FROM frs
GROUP BY
nrp,id_mk) mk_akhir, frs, matakuliah, mahasiswa
WHERE frs.nrp=mk_akhir.nrp AND mk_akhir.id_mk=frs.id_mk
AND frs.tahun=substr(mk_akhir.th_sem,1,4) AND
frs.semester=substr(mk_akhir.th_sem,5,1) AND matakuliah.id_mk=frs.id_mk AND
mahasiswa.nrp=frs.nrp
GROUP BY mk_akhir.nrp, mahasiswa.nama
ORDER BY mk_akhir.nrp;
11. SELECT mk_tawar.id_mk, matakuliah.mata_kuliah,
mk_tawar.tahun, sum(mk_tawar.terisi) jumlah_pertahun
FROM mk_tawar, matakuliah
WHERE
matakuliah.id_mk=mk_tawar.id_mk
GROUP BY mk_tawar.id_mk, matakuliah.mata_kuliah,
mk_tawar.tahun
ORDER BY mk_tawar.tahun, mk_tawar.id_mk;
12. SELECT mk.nrp, mahasiswa.nama, mk.tahun, mk.semester,
(sum(mk.nilai_angka*matakuliah.sks)/sum(matakuliah.sks)) IPS
FROM (SELECT nrp, id_mk, tahun, semester,
decode(nilai_huruf,'A',4,'AB',3.5,'B',3,'BC',2.5,'C',2,'D',1,0) nilai_angka
FROM frs
ORDER BY nrp, tahun, semester) mk,
matakuliah, mahasiswa
WHERE matakuliah.id_mk=mk.id_mk AND
mahasiswa.nrp=mk.nrp
GROUP BY mk.nrp, mahasiswa.nama, mk.tahun,
mk.semester
HAVING
(sum(mk.nilai_angka*matakuliah.sks)/sum(matakuliah.sks))>3.2
ORDER BY mk.nrp, mk.tahun, mk.semester;
13. SELECT mahasiswa.nrp, mahasiswa.nama
FROM mahasiswa
WHERE mahasiswa.nrp NOT IN
(SELECT
DISTINCT nrp
FROM frs
HAVING
count(*)>1
GROUP BY
nrp, id_mk) AND mahasiswa.nrp NOT IN
(SELECT
distinct nrp
FROM frs
WHERE
nilai_huruf >= 'C')
ORDER BY nrp;
16. SELECT DISTINCT hasil.nrp, mahasiswa.nama
FROM (SELECT ngulang.nrp, ngulang.id_mk,
(frs.tahun||frs.semester||frs.nilai_huruf) th_sem_nh
FROM
(SELECT nrp, id_mk
FROM frs
GROUP BY nrp, id_mk
HAVING count(*)>1) ngulang, frs
WHERE
ngulang.nrp=frs.nrp and ngulang.id_mk=frs.id_mk
ORDER BY
nrp, id_mk, th_sem_nh) hasil, mahasiswa
WHERE mahasiswa.nrp=hasil.nrp
GROUP BY hasil.nrp, mahasiswa.nama, hasil.id_mk
HAVING
substr(min(hasil.th_sem_nh),6,1)<substr(max(hasil.th_sem_nh),6,1)
ORDER BY hasil.nrp;
No comments:
Post a Comment
silahkan membaca dan berkomentar