Di seri belajar SQL database bagian 9, kita sudah belajar tentang constraint di MySQL yang berfungsi untuk menjaga agar data tetap valid dan terstruktur dengan baik di dalam tabel. Dengan constraint, database menjadi lebih aman dari kesalahan input data.
Nah selanjutnya pada belajar SQL database bagian 10 kita akan beralih ke topik fungsi agregat dan grouping dalam SQL. Materi ini sangat penting karena dalam praktiknya kita tidak hanya membutuhkan data mentah, tetapi juga ringkasan dan analisis data, seperti rata-rata nilai mahasiswa, nilai tertinggi, atau jumlah mata kuliah yang diambil mahasiswa.
Pada bagian ini, kita akan mempelajari pengertian fungsi agregat, cara kerja fungsi seperti COUNT, SUM, AVG, MIN, dan MAX, serta penggunaan GROUP BY dan HAVING untuk mengelompokkan dan memfilter hasil analisis data secara lebih efektif.
Apa Itu Fungsi Agregat?
Fungsi agregat adalah fungsi dalam SQL yang digunakan untuk menggabungkan banyak baris menjadi satu nilai ringkasan. Fungsi ini sangat berguna ketika kita ingin mendapatkan insight dari data dalam jumlah besar.
Beberapa fungsi agregat utama dalam SQL adalah:
| Fungsi | Kegunaan |
| COUNT() | Menghitung jumlah baris |
| SUM() | Menjumlahkan nilai |
| AVG() | Menghitung rata-rata |
| MIN() | Mencari nilai terkecil |
| MAX() | Mencari nilai terbesar |
Dalam konteks akademik, fungsi agregat sering digunakan untuk:
- menghitung jumlah mata kuliah yang diambil mahasiswa,
- melihat rata-rata nilai per mahasiswa,
- mencari nilai tertinggi dan terendah,
- mengidentifikasi mahasiswa berprestasi, dan
- membuat laporan akademik atau dashboard nilai.
Contoh Struktur Tabel
Agar pembahasan lebih mudah dipahami, kita akan menggunakan contoh tabel nilai_mahasiswa berikut:

Tabel ini menyimpan data nilai mahasiswa untuk beberapa mata kuliah.
Fungsi COUNT() – Menghitung Jumlah Data
Fungsi COUNT() digunakan untuk menghitung jumlah baris dalam sebuah tabel.
Contoh menghitung total data nilai:
SELECT COUNT(*) AS total_data_nilai
FROM nilai_mahasiswa;Berikut hasil perhitungan total data nilainya:

Penjelasan:
- COUNT(*) menghitung semua baris tanpa memedulikan nilai NULL.
- Cocok untuk menghitung total data nilai, total mahasiswa, atau total mata kuliah.
Perbedaan penting:
- COUNT(*) ? menghitung semua baris
- COUNT(kolom) ? hanya menghitung baris yang tidak NULL
Fungsi SUM(), AVG(), MIN(), dan MAX()
Berikut penjelasan masing-masing fungsi:
SUM() — Total Nilai
SELECT SUM(nilai) AS total_semua_nilai
FROM nilai_mahasiswa;Query ini menjumlahkan seluruh nilai yang ada dalam tabel. Berikut hasilnya:

AVG() — Rata-rata
SELECT AVG(nilai) AS rata_rata_nilai
FROM nilai_mahasiswa;Berikut hasil rata – rata yang didapati :

Biasanya dipakai untuk:
- melihat kualitas rata-rata mahasiswa,
- mengevaluasi performa kelas,
- menentukan standar kelulusan.
MIN() & MAX() — Nilai Terkecil dan Terbesar
SELECT
MIN(nilai) AS nilai_terendah,
MAX(nilai) AS nilai_tertinggi
FROM nilai_mahasiswa;Berikut nilai terendah dan tertingginya:

Fungsi ini berguna untuk:
- mencari mahasiswa dengan nilai terendah,
- mencari mahasiswa dengan nilai tertinggi,
- membandingkan performa akademik.
GROUP BY – Mengelompokkan Data
Fungsi agregat sering digunakan bersama GROUP BY, yaitu perintah untuk mengelompokkan data berdasarkan kolom tertentu.
Contoh menghitung rata-rata nilai setiap mahasiswa menggunakan GROUP BY:
SELECT mahasiswa_id, AVG(nilai) AS rata_rata_nilai
FROM nilai_mahasiswa
GROUP BY mahasiswa_id;Query berikut digunakan untuk menghitung rata-rata nilai setiap mahasiswa dengan mengelompokkan data berdasarkan mahasiswa_id menggunakan GROUP BY. Berikut hasilnya :

Cara kerjanya:
- SQL mengelompokkan baris data berdasarkan nilai mahasiswa_id yang sama
- Lalu menghitung rata-rata nilai tiap mahasiswa
Tanpa GROUP BY, query di atas akan menghasilkan error.
WHERE vs HAVING
| WHERE | HAVING |
| Memfilter data sebelum proses GROUP BY | Dipakai setelah GROUP BY |
| Untuk filter baris biasa | Untuk filter hasil agregasi |
Contoh penggunaan HAVING:
SELECT mahasiswa_id, AVG(nilai) AS rata_rata_nilai
FROM nilai_mahasiswa
GROUP BY mahasiswa_id
HAVING AVG(nilai) > 80;Query diatas digunakan untuk menampilkan mahasiswa yang rata-rata nilainya di atas 80. Berikut hasil dari query diatas:

Studi Kasus Analisis Data
1. Menghitung rata-rata Nilai per Mata Kuliah
SELECT mata_kuliah, AVG(nilai) AS rata_rata_nilai
FROM nilai_mahasiswa
GROUP BY mata_kuliah;Query ini menampilkan rata-rata nilai tiap mata kuliah. Dari hasil tersebut, dapat dianalisis mata kuliah mana yang memiliki rata-rata tertinggi atau terendah. Berikut hasilnya:

2. Menghitung 3 Mahasiswa dengan Nilai Rata-rata Tertinggi
SELECT mahasiswa_id, AVG(nilai) AS rata_rata_nilai
FROM nilai_mahasiswa
GROUP BY mahasiswa_id
ORDER BY rata_rata_nilai DESC
LIMIT 3;Query di atas digunakan untuk menampilkan 3 mahasiswa dengan nilai rata-rata tertinggi. Berikut hasil query diatas :

Berguna untuk:
- menentukan mahasiswa berprestasi,
- pemberian beasiswa,
- pemetaan kualitas akademik.
Kesalahan Umum Pada Pemula
Beberapa kesalahan yang sering terjadi:
- Lupa pakai GROUP BY saat menggunakan fungsi agregat.
- Menggunakan WHERE untuk filter hasil agregasi (seharusnya HAVING).
- Tidak memahami perbedaan COUNT(*) dan COUNT(kolom).
- Mengelompokkan data tanpa tujuan analisis yang jelas.
Kesimpulan
Fungsi agregat dan GROUP BY adalah fitur penting dalam SQL untuk merangkum dan menganalisis data secara lebih terstruktur. Dengan fungsi seperti COUNT, SUM, AVG, MIN, dan MAX, data mentah dapat diubah menjadi informasi yang berguna untuk pengambilan keputusan akademik maupun bisnis.
Melalui GROUP BY, data bisa dikelompokkan berdasarkan kategori tertentu, sementara HAVING digunakan untuk memfilter hasil agregasi. Dengan memahami konsep ini, pengolahan data dalam database menjadi lebih rapi dan efektif.
Demikian tutorial Belajar SQL Database Bagian 10 tentang Fungsi Agregat dan Grouping dalam SQL. Terus ikuti seri belajar SQL Database dari Rumahweb. Semoga bermanfaat!


