Halo teman-teman semuanya, di seri ketujuh ini kita akan belajar tentang GROUP BY dan HAVING, dua fitur penting dalam SQL yang digunakan untuk mengelompokkan data berdasarkan kolom tertentu dan menyaring hasil agregat. Ini sangat berguna saat kita ingin membuat laporan — misalnya, jumlah siswa per kelas atau rata-rata umur per jurusan.
Contoh Tabel siswa
Sebelum masuk ke pembahasan, mari kita lihat dulu tabel siswa
yang akan digunakan:
id |
nama |
umur |
kelas |
jurusan |
1 |
Ali |
18 |
XII IPA 1 |
IPA |
2 |
Budi |
17 |
XI IPS 2 |
IPS |
3 |
Citra |
19 |
XII IPA 3 |
IPA |
4 |
Dewi |
16 |
X IPA 2 |
IPA |
5 |
Eko |
18 |
XII IPS 1 |
IPS |
6 |
Fina |
17 |
XI IPA 1 |
IPA |
7 |
Gani |
18 |
XII IPS 2 |
IPS |
Apa Itu GROUP BY?
Klausa GROUP BY digunakan untuk mengelompokkan baris data berdasarkan nilai kolom tertentu, lalu menerapkan fungsi agregat pada masing-masing kelompok tersebut.
Contoh:
Hitung jumlah siswa per jurusan:
SELECT jurusan, COUNT(*) AS jumlah_siswa
FROM siswa
GROUP BY jurusan;
Hasil:
jurusan |
jumlah_siswa |
IPA |
4 |
IPS |
3 |
Fungsi Agregat Lain dengan GROUP BY
Misalnya kita ingin mengetahui rata-rata umur siswa di tiap jurusan:
SELECT jurusan, AVG(umur) AS rata_umur
FROM siswa
GROUP BY jurusan;
Hasil:
jurusan |
rata_umur |
IPA |
17.5 |
IPS |
17.67 |
Apa Itu HAVING?
HAVING digunakan untuk menyaring hasil dari GROUP BY, mirip seperti WHERE, tetapi digunakan setelah pengelompokan selesai.
Contoh:
Tampilkan hanya jurusan yang memiliki lebih dari 3 siswa:
SELECT jurusan, COUNT(*) AS jumlah_siswa
FROM siswa
GROUP BY jurusan
HAVING COUNT(*) > 3;
Hasil:
jurusan |
jumlah_siswa |
IPA |
4 |
Kombinasi GROUP BY dan ORDER BY
Kita bisa mengurutkan hasil setelah dikelompokkan:
SELECT kelas, COUNT(*) AS jumlah_siswa
FROM siswa
GROUP BY kelas
ORDER BY jumlah_siswa DESC;
Kesimpulan
Pada artikel ini, kita telah mempelajari cara menggunakan GROUP BY untuk mengelompokkan data, dan HAVING untuk menyaring hasil dari fungsi agregat.
Terima Kasih