• Tidak ada hasil yang ditemukan

Contoh-contoh query SQL

N/A
N/A
Protected

Academic year: 2021

Membagikan "Contoh-contoh query SQL"

Copied!
11
0
0

Teks penuh

(1)

Contoh-contoh query SQL

Pada kesempatan kali ini saya akan menjelaskan contoh-contoh query dalam MySQL. Tabel-tabel yang akan kita gunakan adalah sebagai berikut:

matakuliah(kodemk, namamk, sks), berisi daftar matakuliah yang ditawarkan dosen(nip, nama), berisi daftar dosen pengampu kuliah

mahasiswa(nim, nama, dosenpembimbing), berisi daftar mahasiswa

kuliah(kodekuliah, kodemk, nip, thnakademik, semester), berisi daftar matakuliah dan dosen pengampu

peserta(nim, kodekuliah, nilai), berisi kuliah yang diikuti mahasiswa beserta nilainya dalam huruf

Dalam pembahasan kali ini diasumsikan:

matakuliah hanya ditawarkan sekali dalam setahun, yaitu pada semester 1 (ganjil) saja atau semester 2 (genap) saja dan tidak kedua-duanya.

bila pernah mengulang matakuliah, nilai yang diikutkan untuk perhitungan IP adalah nilai terakhir

matakuliah dikatakan lulus bila nilai yang diperoleh minimal ‘D’ Berikut ini adalah contoh-contoh query dalam MySQL:

1. Menampilkan banyaknya SKS yang telah diselesaikan oleh masing-masing mahasiswa a. Bila matakuliah yang diulang semua masuk dalam perhitungan

SELECT nim, SUM( sks ) jumlahsks FROM peserta, (

SELECT kodekuliah, kuliah.kodemk, sks FROM kuliah, matakuliah

WHERE kuliah.kodemk = matakuliah.kodemk ) A

WHERE peserta.kodekuliah = A.kodekuliah GROUP BY nim

(2)

Pada query ini kita menampilkan jumlah SKS yang telah diselesaikan oleh masing-masing mahasiswa bila matakuliah yang diulang semua masuk dalam perhitungan. Pertama-tama, kita melakukan join tabel kuliah dengan tabel matakuliah pada kondisi kodemk pada

tabel kuliah sama dengan kodemk pada tabel matakuliah untuk mendapatkankodekuliah, kodemk dan sks.

…(

SELECT kodekuliah, kuliah.kodemk, sks FROM kuliah, matakuliah

WHERE kuliah.kodemk = matakuliah.kodemk ) A

Lalu hasil join tersebut diberi alias A. Selanjutnya, tabel A tadi kita join-kan dengan tabel peserta pada kondisi kodekuliah pada tabel peserta sama dengan kodekuliah pada tabelA untuk

mendapatkan nim dan sks yang selanjutnya kita menjumlahkan sks dengan SUM(sks) yang dikelompokkan berdasarkan nim menggunakan GROUP BY nim.

b. Bila matakuliah yang diulang hanya yang sesuai dengan asumsi yang masuk dalam perhitungan

SELECT nim, SUM( sks ) totalsks FROM (

SELECT DISTINCT nim, kodemk FROM peserta, kuliah

WHERE peserta.kodekuliah = kuliah.kodekuliah )P, matakuliah

WHERE P.kodemk = matakuliah.kodemk GROUP BY nim

Penjelasan:

Pada query ini kita menampilkan jumlah SKS yang telah diselesaikan oleh masing-masing mahasiswa bila matakuliah yang diulang hanya dihitung sekali. Pertama-tama kita melakukan

(3)

join tabel peserta dengan tabel kuliah pada kondisi kodekuliah pada tabel peserta sama dengan kodekuliah pada tabel kuliah untuk mendapatkan nim dan kodemk.

… (

SELECT DISTINCT nim, kodemk FROM peserta, kuliah

WHERE peserta.kodekuliah = kuliah.kodekuliah )P …

Kata DISTINCT setelah SELECT digunakan untuk menghilangkan pengulangan record yang mempunyai nim dan kodemk yang sama agar matakuliah yang diulang oleh seorang mahasiswa hanya muncul sekali. Hasil join tersebut diberi alias P. Lalu tabel P kita join-kan dengan

tabel matakuliah pada kondisi kodemk pada tabel P sama dengan kodemk pada

tabel matakuliah untuk mendapatkan nim dan sks yang dijumlahkan dengan SUM(sks) setelah dikelompokkan berdasarkan GROUP BY nim.

2. Menampilkan data-data yang bisa untuk melakukan perhitungan IPK (berdasar asumsi di atas)

SELECT nim, kuliah.kodemk, nilai, sks FROM peserta, matakuliah, kuliah

WHERE kuliah.kodekuliah = peserta.kodekuliah AND kuliah.kodemk = matakuliah.kodemk AND (

nim, kuliah.kodemk, thnakademik )

IN (

SELECT nim, kodemk, MA thnakademik ) thnterakhir FROM peserta, kuliah

WHERE kuliah.kodekuliah = peserta.kodekuliah GROUP BY nim, kodemk

(4)

)

Penjelasan:

Pada query ini kita melakukan join pada tiga tabel, yaitu peserta, matakuliah dan kuliah dengan kondisi kodekuliah pada tabel kuliah sama dengan kodekuliah pada

tabelpeserta dan kodemk pada tabel kuliah sama dengan kodemk pada tabel matakuliah. Setelah itu kita lakukan operasi intersection dengan query yang menampilkan tahun terakhir

menyelesaikan suatu matakuliah. …

AND (

nim, kuliah.kodemk, thnakademik )

IN (

SELECT nim, kodemk, MA thnakademik ) thnterakhir FROM peserta, kuliah

WHERE kuliah.kodekuliah = peserta.kodekuliah GROUP BY nim, kodemk

)

Pada query untuk menampilkan tahun terakhir menyelesaikan suatu matakuliah, kita melakukan join pada tabel peserta dan tabel kuliah dengan kondisi kodekuliah pada tabel kuliahsama dengan kodekuliah pada tabel peserta. Lalu untuk mencari tahun terakhir digunakan fungsi MA

thnakademik) setelah dikelompokkan berdasarkan nim dan kodemk denganGROUP BY nim, kodemk. Lalu operasi intersection dilakukan dengan memeriksa apakah record nim, kodemk, thnakademik dari hasil join tiga tabel ada pada hasil query untuk menampilkan tahun terakhir menyelesaikan suatu matakuliah.

3. Menampilkan dosen yang pernah mengampu kelas matakuliah yang pesertanya tidak lebih dari 15 mahasiswa

SELECT DISTINCT nip FROM kuliah, (

(5)

FROM peserta GROUP BY kodekuliah ) banyakpeserta

WHERE kuliah.kodekuliah = banyakpeserta.kodekuliah AND jumlahpeserta <=15

Penjelasan:

Pada query ini kita akan menampilkan dosen yang pernah mengampu matakuliah yang

pesertanya <= 15 mahasiswa. Awalnya menggunakan tabel peserta, kita hitung dahulu jumlah peserta dari setiap kuliah dengan menggunakan COUNT setelah dikelompokkan berdasarkan kodekuliah dengan GROUP BY kodekuliah.

…(

SELECT kodekuliah, COUNT( * ) jumlahpeserta FROM peserta

GROUP BY kodekuliah ) banyakpeserta …

Setelah itu query tersebut diberi alias banyakpeserta. Lalu pada query utama kita melakukan join pada tabel banyakpeserta dengan tabel kuliah pada kondisi kodekuliah pada tabelkuliah sama dengan kodekuliah pada tabel banyakpeserta serta menambahkan kondisi jumlahpeserta <= 15. Pada query utama kita menampilkan nip yang di dahului dengan kataDISTINCT agar nip yang ditampilkan tidak ada perulangan.

4. Menampilkan nama mahasiswa yang telah lulus lebih dari 100 SKS SELECT nama

FROM (

(6)

FROM peserta, kuliah, matakuliah WHERE nilai < 'E'

AND kuliah.kodekuliah = peserta.kodekuliah AND kuliah.kodemk = matakuliah.kodemk GROUP

BY nim

) yanglulus, mahasiswa WHERE jumlahsks >100

AND yanglulus.nim = mahasiswa.nim

Penjelasan:

Pada query ini kita akan menampilkan nama mahasiswa yang telah lulus > 100 SKS. Mula-mula kita menghitung jumlah SKS dari matakuliah yang lulus untuk masing-masing mahasiswa. Kita melakukan join pada tiga tabel peserta, kuliah dan matakuliah dengan kondisi kodekuliah pada tabel kuliah sama dengan kodekuliah pada tabel peserta dan kodemk pada tabel kuliah sama dengan kodemk pada tabel matakuliah disertai dengan kondisi nilai < ‘E’ yang berarti nilai >= ‘E’ tidak diikutkan. Lalu sks yang memenuhi kondisi dijumlahkan dengan SUM(sks) yang diberi alias jumlahsks setelah dikelompokkan berdasarkan nim dengan GROUP BY nim. Query

tersebut diberi alias jumlahlulus. …(

SELECT nim, SUM( sks ) jumlahsks FROM peserta, kuliah, matakuliah WHERE nilai < 'E'

AND kuliah.kodekuliah = peserta.kodekuliah AND kuliah.kodemk = matakuliah.kodemk GROUP

BY nim ) yanglulus …

(7)

Pada query utama kita melakukan join pada tabel yanglulus dengan mahasiswa dengan kondisi nim pada tabel yanglulus sama dengan nim pada tabel mahasiswa disertai

kondisijumlahsks > 100 untuk menampilkan nama mahasiswa yang telah lulus > 100 SKS. 5. Menampilkan banyaknya siswa yang telah lulus tugas akhir bila kode matakuliah untuk tugas akhir adalah ‘M0012’

SELECT COUNT( * ) lulusTA FROM peserta, kuliah

WHERE nilai < 'E'

AND kuliah.kodekuliah = peserta.kodekuliah AND kodemk = 'M0012'

Penjelasan:

Pada query kali ini kita akan menampilkan jumlah mahasiswa yang telah lulus tugas akhir bila kode matakuliah tugas akhir = ‘M0012’. Pertama-tama kita melakukan join pada

tabel peserta dankuliah dengan kondisi kodekuliah pada tabel kuliah sama

dengan kodekuliah pada tabel peserta untuk mendapatkan nilai dan kodemk. Lalu hasil join tersebut kita saring dengan kondisi nilai < ‘E’ dan kodemk = ‘M0012’ yang selanjutnya setelah disaring kita hitung dengan COUNT dan diberi alias lulusTA untuk menghitung jumlah mahasiswa yang telah lulus tugas akhir.

6. Menampilkan daftar nomor dan nama mahasiswa beserta IP berdasar dua asumsi di atas SELECT buatip.nim, nama, (

SUM( nilaisks ) / SUM( sks ) ) ip

FROM mahasiswa, (

SELECT nim, kuliah.kodemk, ( ( 69 – ASCII( UPPER( nilai ) ) ) * sks ) nilaisks, sks

FROM peserta, matakuliah, kuliah

(8)

AND kuliah.kodemk = matakuliah.kodemk AND (

nim, kuliah.kodemk, thnakademik )

IN (

SELECT nim, kodemk, MA thnakademik ) thnterakhir FROM peserta, kuliah

WHERE kuliah.kodekuliah = peserta.kodekuliah GROUP BY nim, kodemk

) )buatip

WHERE mahasiswa.nim = buatip.nim GROUP BY nim

Penjelasan:

Pada query yang cukup panjang ini. kita akan menampilkan nomor dan nama mahasiswa beserta IP berdasar dua asumsi di atas. Pada awalnya kita membuat query untuk

menampilkan nim,kodemk dan nilai yang sudah dikali sks. Query ini mirip seperti query yang dijelaskan pada nomor 2 dengan sedikit perubahan.

…(

SELECT nim, kuliah.kodemk, (

( 69 – ASCII( UPPER( nilai ) ) ) * sks

) nilaisks, sks

FROM peserta, matakuliah, kuliah

WHERE kuliah.kodekuliah = peserta.kodekuliah AND kuliah.kodemk = matakuliah.kodemk

(9)

AND (

nim, kuliah.kodemk, thnakademik )

IN (

SELECT nim, kodemk, MA thnakademik ) thnterakhir FROM peserta, kuliah

WHERE kuliah.kodekuliah = peserta.kodekuliah GROUP BY nim, kodemk

) ) buatip

Bagian yang ditebalkan merupakan perubahan yang dilakukan untuk query kali ini. Hasil query tersebut diberi alias buatip. Lalu kita melakukan join pada tabel buatip dan tabel nama dengan kondisi nim pada tabel mahasiswa sama dengan nim pada tabel buatip untuk mendapatkan nama. Selanjutnya untuk menghitung IP, kita menjumlahkan semua nilaisks dan membaginya dengan jumlah sks dengan SUM(nilaisks) / SUM(sks) setelah dikelompokkan menurut nim-nya dengan menggunakan GROUP BY nim.

7. Menghitung IP bila asumsi kedua di atas diganti bahwa nilai yang dipakai untuk penentuan IP adalah nilai yang terbaik (dari serangkaian mengulang matakuliah)

SELECT nim, (

SUM( nilaimaxsks ) / SUM( sks ) )ip

FROM (

SELECT nim, (

( 69 – ASCII( UPPER( nilaimax ) ) ) * sks )nilaimaxsks, sks

(10)

SELECT nim, kodemk, MIN( nilai ) nilaimax FROM peserta, kuliah

WHERE kuliah.kodekuliah = peserta.kodekuliah GROUP BY nim, kodemk

) nilaiterbaik

WHERE nilaiterbaik.kodemk = matakuliah.kodemk )buatip

GROUP BY nim

Penjelasan:

Pada query ini kita akan menampilkan IP dengan asumsi kedua diganti menjadi nilai yang dipakai untuk menghitung IP adalah nilai yang terbaik. Mula-mula kita mencari nilai terbaik pada setiap matakuliah untuk masing-masing mahasiswa. Kita melakukan join pada

tabel peserta dengan tabel kuliah pada kondisi kodekuliah pada tabel kuliah sama

dengan kodekuliah pada tabel peserta untuk mendapatkan kodemk dan nilai. Lalu kita mencari nilai terbaik dari setiap matakuliah untuk masing-masing mahasiswa dengan MIN(nilai) setelah dikelompokkan berdasarkan nim dan kodemk dengan menggunakan GROUP BY nim,

kodemk karena nilai ascii ‘A’ < ‘B’ < ‘C’ < ‘D’ < ‘E’. …(

SELECT nim, kodemk, MIN( nilai ) nilaimax FROM peserta, kuliah

WHERE kuliah.kodekuliah = peserta.kodekuliah GROUP BY nim, kodemk

) nilaiterbaik …

Hasil query tersebut diberi alias nilaiterbaik. Setelah itu kita melakukan join

tabel nilaiterbaik dengan tabel matakuliah pada kondisi kodemk pada tabel nilaiterbaik sama dengan kodemk pada tabel kuliah untuk mendapatkan sks.

(11)

…(

SELECT nim, (

( 69 – ASCII( UPPER( nilaimax ) ) ) * sks )nilaimaxsks, sks

FROM matakuliah, (

SELECT nim, kodemk, MIN( nilai ) nilaimax FROM peserta, kuliah

WHERE kuliah.kodekuliah = peserta.kodekuliah GROUP BY nim, kodemk

) nilaiterbaik

WHERE nilaiterbaik.kodemk = matakuliah.kodemk )buatip

Hasil query tersebut diberi alias buatip. Kemudian kita menghitung IP seperti query pada nomor 6 yaitu SUM(nilaimaxsks) / SUM(sks) setelah dikelompokkan berdasarkan nimdengan

Referensi

Dokumen terkait

Diferensiasi fungsi majemuk  diferensiasi untuk fungsi-fungsi yang mengandung lebih dari satu macam variabel bebas.

1) Kangkung sutera dapat ditanam bersamaan dengan waktu tanam jagung manis, sampai dengan tiga minggu setelah tanam jagung manis. 2) Hasil jagung manis tidak

Namun demikian, pilihan seseorang dari pendekatan ini juga dipengaruhi oleh faktor lain, yaitu kharisma dari seorang kandidat yang menjadi sosok idaman bagi

penelitian ini akan dilaksanakan sejak bulan Maret sampai Juli 2017 dengan judul “ Pemanfaatan Pangkasan Colopogonium mucunoides Sebagai Pupuk Hijau Terhadap

Berdirinya Badan Usaha Milik Desa (BUMDes) membuat masyarakat pedesaan mengalami perubahan pesat secara ekonomi, tata kelola manajemen yang profesional akan mampu

Bangun Guna Serah yang selanjutnya disebut BGS adalah pemanfaatan barang milik Negara/Daerah berupa tanah oleh pihak lain dengan cara mendirikan bangunan dan/atau

Pada tanggal 5 September 2005, Bank mengadakan perjanjian kerjasama tentang Fasilitas Kredit untuk Karyawan, untuk jangka waktu 2 (dua) tahun sejak perjanjian ditandatangani,

Nilai pH yang diperoleh mengalami penurunan sejalan dengan kenaikan level ektrak rosella yang diberikan pada sampel, dengan demikian maka kehadiran antioksidan yang