SISTEM BASIS DATA | PERTEMUAN 6 DARI 10
Klik judul bagian untuk membuka atau menutup.
PERTEMUAN 6
SQL Lanjutan (Query Kompleks)
Dari data mentah menjadi informasi
Capaian: Menyusun query dengan fungsi agregat, GROUP BY/HAVING, join banyak tabel, dan subquery.
๐ Agregat dan Pengelompokan
- COUNT, SUM, AVG, MAX, MIN.
- GROUP BY mengelompokkan; HAVING menyaring kelompok.
- WHERE menyaring baris sebelum dikelompokkan.
๐ Join dan Subquery
- INNER JOIN: hanya pasangan yang cocok.
- LEFT/RIGHT JOIN: pertahankan semua baris satu sisi.
- Subquery: query di dalam query (nested).
๐งฉ Metafora
Perumpamaan: Rekap kelas: GROUP BY menumpuk berkas per kelas, HAVING memilih tumpukan yang cukup tebal.
๐งช Contoh Kasus / Kode
SELECT p.nama_prodi, COUNT(*) AS jumlah FROM mahasiswa m INNER JOIN prodi p ON m.id_prodi = p.id_prodi GROUP BY p.nama_prodi HAVING COUNT(*) >= 10; SELECT m.nama, k.kode_mk FROM mahasiswa m LEFT JOIN krs k ON m.nim = k.nim; -- belum KRS tetap muncul (NULL) SELECT nama FROM mahasiswa WHERE nim IN (SELECT nim FROM krs WHERE nilai > (SELECT AVG(nilai) FROM krs));
๐ผ๏ธ Ilustrasi Visual
Dua tabel dihubungkan lewat kolom id_prodi, lalu hasilnya dikelompokkan dan dihitung per program studi.
๐ Kesalahan Umum
- Memakai WHERE untuk kondisi agregat (seharusnya HAVING).
- Kolom non-agregat tidak ada di GROUP BY.
- Join tanpa kondisi ON.
โ๏ธ Latihan
Tampilkan rata-rata nilai per matakuliah, hanya yang rata-ratanya di atas 75.
๐ Ajakan (Call to Action)
Ajakan: Buat 3 query pelaporan untuk data kampus Anda dan jelaskan arti hasilnya.
Disusun oleh ALIMIN, M.Kom