Select MAX from Other Select

Aku gak tau judul yang bagus gimana, nanti kalau sudah nemu judul yang bagus, aku update, hehe.
Oke, diketahui sebuah tabel instruktur memiliki data:
+-----+---------------+---------------+----------+
| nip | namainst      | jurusan       | asalkota |
+-----+---------------+---------------+----------+
|   1 | Steve Wozniak | Ilmu Komputer | Bantul   |
|   2 | Steve Jobs    | Seni Rupa     | Solo     |
|   3 | James Gosling | Ilmu Komputer | Klaten   |
|   4 | Bill Gates    | Ilmu Komputer | Magelang |
+-----+---------------+---------------+----------+

dan tabel kuliah memiliki data:
+-----+--------+---------+--------+
| nip | nomk   | ruangan | jmlmhs |
+-----+--------+---------+--------+
|   1 | KOM101 | 301     |     50 |
|   1 | KOM102 | 102     |     35 |
|   2 | SR101  | 101     |     45 |
|   3 | KOM201 | 101     |     55 |
+-----+--------+---------+--------+

Pertanyaannya, buatlah query yang menampilkan nomor dan nama instruktur yang mengampu mahasiswa terbanyak?

Setelah perjalanan panjangku untuk mencari-cari, dengan kesehatan yang menurun karena flu berat (gak penting sih sebenernya, haha), akhirnya nemu juga caranya untuk nampilkan nomor dan nip instruktur dengan pangampu mahasiswa terbanyak, seperti ini:

SELECT maxquery.nip, maxquery.nama, MAX(maxquery.jum) AS 'Jumlah Peserta'
FROM 
SELECT i.nip AS nip, i.namainst AS nama, SUM(k.jmlmhs) 
AS jum FROM instruktur i, kuliah k WHERE i.nip = k.nip GROUP BY k.nip) AS maxquery;


Kenapa harus pakai SUM? Karena, ada kemungkinan kan kalau seorang instruktur bisa mengampu mahasiswa untuk mata kuliah yang berbeda, jadi, penggunaan SUM disini untuk menjumlahkan jumlah mahasiswa yang di ampu seorang instruktur untuk semua kuliah instruktur tersebut. (kok jadi njelimet gini ya penjelasannya,  pokoknya gitu deh, hehe)


Komentar

  1. Bu Dosen, ini mungkin lebih baik query nya

    SELECT i.nip AS nip, i.namainst AS nama, SUM(k.jmlmhs)
    AS `Jumlah Peserta` FROM instruktur i JOIN kuliah k USING(nip) GROUP BY k.nip
    ORDER BY `Jumlah Peserta` DESC LIMIT 1

    Kenapa? Karena tidak menggunakan subquery. Subquery untuk data yang banyak akan membutuhkan resoure yang lumayan besar di servernya. So, kenapa harus subquery kalau queri 1 aja cukup. Semoga bermanfaat. Tetap semangat Bu.

    BalasHapus
    Balasan
    1. hooooo, ada ya... haha, aku ga tau..
      (psst, ini soal tugas untukku mas, hihi...)
      tengkiu mas galiiiiiiih...(^n^)

      Hapus
    2. Interupsi ketua ....
      Saya rasa yang diajarkan Bu Dosen adalah SQL dengan syntax yang umum dan standar. Belum terlalu condong ke syntax SQL khas suatu DBMS. (Kecuali emang pake Mysql sebagai base mengajarnya , maafken saya :D )

      Limit disini kebanyakan dianut oleh paham Mysql dan Postgre. Atau klo mo ikut standarisasi ISO SQL 2008 memakai perintah FETCH FIRST.(http://en.wikipedia.org/wiki/Select_%28SQL%29#Result_limits)

      * tendang galih kembali ke laptop

      Hapus
    3. wkwkwk... master e DB bicara...
      *terharu aku, dibela mas dian (╥﹏╥)*
      ini bukan bahan ngajar kok mas, ini tugas kuliahku.. wkwkwkwkwk... :D

      Hapus

Posting Komentar

Terima kasih sudah membaca....^^