"Implementasi COUNT, AVG, MIN, MAX, GROUP BY, HAVING, dan Fungsi Bawaan pada Database AKADEMIK"
Nama : Rangga Hazirathul Qudsiah
NPM : 24781052
Kelas : Manajemen Informatika 4B
Pendahuluan
Bahasa SQL memiliki peran penting dalam pengolahan data pada database, khususnya dalam proses pengambilan dan analisis data yang melibatkan peringkasan informasi dari tabel-tabel besar. Pada praktikum kali ini, topik yang dibahas adalah penggunaan perintah SELECT tingkat lanjut yang melibatkan fungsi agregat seperti COUNT, AVG, MIN, dan MAX, serta klausa GROUP BY dan HAVING. Penggunaan klausa ini sangat krusial dalam database akademik untuk menghasilkan informasi yang terstruktur, seperti menghitung jumlah mahasiswa per angkatan, mencari nilai IPK rata-rata, hingga memfilter data kelompok yang memenuhi syarat tertentu. Selain itu, praktikum ini juga mencakup penggunaan fungsi bawaan string (UPPER, LENGTH/LEN) dan fungsi tanggal (strftime/YEAR) untuk standarisasi informasi pada tabel mahasiswa dan dosen.
Pembahasan
· COUNT dan SUM
Query yang diuji menggunakan fungsi
agregat COUNT(tempat_lahir) dengan alias dosen_ada_kota dari tabel dosen.
Tujuan pengujian ini adalah untuk menghitung jumlah total baris pada kolom
tempat lahir yang memiliki nilai (bukan null) untuk mengetahui sebaran data
domisili dosen. Hasil output menampilkan 1 baris dengan nilai 3, yang
memverifikasi bahwa terdapat tiga data tempat lahir yang tercatat pada tabel
dosen tanpa adanya kendala eksekusi.
·
GROUP
BY dan HAVING
Query dijalankan menggunakan klausa GROUP BY thn_masuk yang dikombinasikan dengan filter agregat HAVING COUNT(*) >= 10. Tujuan pengujian adalah untuk mengelompokkan mahasiswa berdasarkan tahun angkatan dan hanya menampilkan angkatan yang memiliki jumlah anggota minimal 10 orang. Hasil output menampilkan angkatan tahun 2024 dengan jumlah 12 mahasiswa, memverifikasi bahwa hanya angkatan tersebut yang memenuhi kriteria filter kuantitas yang ditetapkan.
·
MIN,
MAX, AVG
Query menggunakan fungsi statistik MAX(LEN(nama)) dan MIN(LEN(nama)) untuk menghitung panjang karakter string pada kolom nama mahasiswa. Tujuan pengujian adalah untuk mengidentifikasi rentang variasi panjang nama, mulai dari yang paling panjang hingga yang paling pendek dalam satuan karakter. Hasil output menunjukkan nilai 14 untuk nama terpanjang dan 3 untuk nama terpendek, memberikan verifikasi data mentah untuk kebutuhan validasi lebar kolom pada UI sistem.
·
Fungsi
String
Query diuji menggunakan klausa SELECT DISTINCT yang digabungkan dengan fungsi SUBSTRING(npm, 1, 2). Tujuan pengujian adalah untuk mengekstrak dua digit pertama dari NPM sebagai representasi kode angkatan secara unik dan mengurutkannya secara alfabetis. Hasil output menampilkan kode angkatan '24', yang memverifikasi bahwa data mahasiswa yang diproses saat ini berasal dari satu angkatan yang sama atau setidaknya baru satu pola angkatan yang teridentifikasi unik.
·
Fungsi
Tanggal
Query menggunakan fungsi FORMAT(tgl_lahir, 'MM') untuk mengambil bagian bulan dari tipe data tanggal lahir dosen. Tujuan pengujian adalah untuk memetakan bulan kelahiran dosen guna keperluan pengurutan kronologis bulanan secara sistematis. Hasil output menampilkan 3 baris data dosen (Andi, Budi, Siti) dengan format bulan '01', '05', dan '11', memverifikasi bahwa fungsi manipulasi tanggal tersebut bekerja sempurna pada dialek SQL yang digunakan.
·
Tugas
Mandiri 1 - COUNT dengan GROUP BY
Query dijalankan dengan klausa SELECT thn_masuk disertai fungsi agregat COUNT(*) yang dikelompokkan melalui GROUP BY thn_masuk. Tujuan pengujian tugas mandiri ini adalah untuk menyajikan statistik distribusi jumlah mahasiswa per tahun angkatan secara menyeluruh tanpa filter batas minimal. Hasil output menampilkan tren data dari tahun 2022 hingga 2024 dengan sebaran jumlah 1, 1, dan 12 mahasiswa, yang memberikan verifikasi akhir bahwa data angkatan 2024 merupakan kelompok dominan dalam database tersebut.
·
Tugas
Mandiri 2 - HAVING untuk filter agregat
Query yang diuji menggunakan fungsi agregat COUNT(*) dengan klausa GROUP BY idprodi dan filter HAVING COUNT(*) > 1. Tujuan pengujian ini adalah untuk mencari program studi yang memiliki lebih dari satu dosen agar dapat memantau kecukupan tenaga pendidik di tiap departemen. Hasil output menampilkan idprodi 101 dengan jumlah 2 dosen, yang memverifikasi bahwa departemen tersebut memiliki staf pengajar jamak sementara departemen lainnya (jika ada) hanya memiliki satu atau tidak sama sekali.
·
Tugas
Mandiri 3 - MIN/MAX/AVG pada kolom numerik
Query menggunakan fungsi statistik agregat MAX(ipk), MIN(ipk), dan AVG(ipk) pada tabel mahasiswa. Tujuan pengujian adalah untuk mendapatkan gambaran performa akademik mahasiswa secara umum melalui nilai tertinggi, terendah, dan rata-rata kelas. Hasil output menunjukkan IPK tertinggi 3.95, terendah 2.9, dan rata-rata sekitar 3.53, memverifikasi tingkat keberhasilan studi mahasiswa dalam database tersebut berada pada kategori yang cukup baik.
·
Tugas
Mandiri 4 - Fungsi String bebas
Query diuji menggunakan fungsi manipulasi string UPPER(nama) untuk mengubah seluruh karakter nama mahasiswa menjadi huruf kapital. Tujuan pengujian adalah untuk standardisasi tampilan nama agar terlihat lebih profesional dan seragam pada laporan atau kartu tanda mahasiswa. Hasil output menampilkan daftar 14 mahasiswa (termasuk Ahmad Rendy, Bella Safira, hingga Gita Permata) dengan format nama kapital sempurna, memverifikasi fungsi transformasi teks tersebut bekerja secara konsisten pada semua baris.
·
Tugas
Mandiri 5 - Fungsi Tanggal bebas
Query menggunakan fungsi tanggal YEAR(tgl_lahir) untuk mengekstrak informasi tahun kelahiran dari kolom tanggal lahir mahasiswa. Tujuan pengujian adalah untuk mengetahui profil usia dan sebaran tahun kelahiran mahasiswa guna keperluan administrasi atau analisis demografi. Hasil output menampilkan kolom nama bersanding dengan tahun lahir (seperti 2004, 2005, dan 2006), yang memverifikasi bahwa data tanggal lahir telah tersimpan dan dapat diolah per komponen tahunnya.
·
Tugas
Mandiri 6 - Query Kombinasi Agregat dan Fungsi
Query dijalankan dengan
mengombinasikan fungsi YEAR(tgl_lahir) dan COUNT(*) yang dikelompokkan melalui
GROUP BY YEAR(tgl_lahir). Tujuan pengujian tugas mandiri terakhir ini adalah
untuk membuat statistik distribusi populasi mahasiswa berdasarkan tahun kelahiran
mereka. Hasil output menampilkan sebaran mahasiswa yang lahir pada tahun 2004
(2 orang), 2005 (9 orang), dan 2006 (3 orang), memberikan verifikasi akhir
bahwa mahasiswa kelahiran tahun 2005 merupakan mayoritas dalam database
akademik ini.
Refleksi Pribadi
Hal yang
Sulit:
Salah satu tantangan terbesar dalam praktikum ini adalah memahami perbedaan sintaks antara SQLite (yang digunakan di web simulasi) dengan Microsoft SQL Server (SSMS). Sebagai contoh, fungsi untuk mengambil tahun di SQLite menggunakan strftime('%Y', ...) sementara di SSMS cukup menggunakan YEAR(). Selain itu, ketelitian dalam menggunakan klausa HAVING juga cukup menantang, karena klausa ini hanya bisa digunakan untuk memfilter hasil yang sudah diagregasi, berbeda dengan klausa WHERE yang memfilter baris data sebelum dikelompokkan.
Tips yang
Membantu:
- Perhatikan Tipe Data: Pastikan kolom seperti "Nama" menggunakan tipe data VARCHAR bukan TEXT, agar fungsi string seperti LEN() bisa berjalan tanpa perlu melakukan casting.
- Uji Query Secara Bertahap: Jangan langsung membuat query yang panjang. Mulailah dengan SELECT dan GROUP BY terlebih dahulu, setelah hasilnya muncul, baru tambahkan filter HAVING atau fungsi ORDER BY.
- Gunakan Alias (AS): Selalu gunakan alias pada kolom hasil agregasi agar tabel output di SSMS lebih mudah dibaca dan dipahami.
Kesimpulan
Inti dari praktikum ini adalah pemahaman bahwa pengolahan data yang efektif memerlukan kombinasi antara fungsi perhitungan dan teknik pengelompokan yang tepat. Dengan memanfaatkan fungsi agregat yang dikombinasikan dengan klausa GROUP BY dan HAVING, kita dapat mengubah ribuan baris data mentah menjadi laporan ringkas yang informatif. Praktik langsung menggunakan Microsoft SQL Server (SSMS) juga memberikan wawasan teknis mengenai pentingnya pemilihan tipe data dan perbedaan sintaks fungsi bawaan antar-DBMS, yang sangat dibutuhkan dalam manajemen basis data profesional.
Daftar Pustaka
Microsoft Learn. (2026). Aggregate Functions (Transact-SQL) - SQL Server Reference. [Online]. Tersedia di: https://learn.microsoft.com/sql/t-sql/functions/aggregate-functions-transact-sql.
Silberschatz, A., Korth, H. F., & Sudarshan, S. (2020). Database System Concepts (7th Edition). McGraw-Hill Education.
W3Schools. (2026). SQL GROUP BY and HAVING Statement Tutorial. [Online]. Tersedia di: https://www.w3schools.com/sql/sql_groupby.asp.
Materi Praktikum Pemrograman SQL II.
Komentar
Posting Komentar